public static Formats.Animation.Anim ParseAnim(this SsbhParser parser)
        {
            var result = new Formats.Animation.Anim();

            result.Magic           = parser.ReadUInt32();
            result.VersionMajor    = parser.ReadUInt16();
            result.VersionMinor    = parser.ReadUInt16();
            result.FinalFrameIndex = parser.ReadSingle();
            result.Unk1            = parser.ReadUInt16();
            result.Unk2            = parser.ReadUInt16();
            result.Name            = parser.ReadOffsetReadString();
            {
                // TODO: Extract this code to a method?
                long absoluteOffset   = parser.ReadRelativeGetAbsoluteOffset();
                long elementCount     = parser.ReadInt64();
                long previousPosition = parser.Position;
                parser.Seek(absoluteOffset);


                result.Animations = new Formats.Animation.AnimGroup[elementCount];
                for (int i = 0; i < elementCount; i++)
                {
                    result.Animations[i] = parser.ParseAnimGroup();
                }

                parser.Seek(previousPosition);
            }
            {
                // TODO: Extract this code to a method?
                long absoluteOffset   = parser.ReadRelativeGetAbsoluteOffset();
                long elementCount     = parser.ReadInt64();
                long previousPosition = parser.Position;
                parser.Seek(absoluteOffset);

                result.Buffer = parser.ReadBytes((int)elementCount);

                parser.Seek(previousPosition);
            }
            return(result);
        }