internal bytecodeEnumerator(Tag tag)
 {
     this.tag = tag;
     index = -1;
 }
 internal BytecodeHolder(Tag t)
 {
     tag = t;
 }
        internal Tag ReadTag()
        {
            long posBefore = SWFBinary.BaseStream.Position;
            var rh = new RecordHeader();
            rh.ReadData(SWFBinary);

            var offset = (int) (SWFBinary.BaseStream.Position - posBefore);
            SWFBinary.BaseStream.Position = posBefore;

            Tag resTag;

            switch (rh.TagCode)
            {
                case (int) TagCodes.DoABC:
                    resTag = new DoABC();
                    break;
                case (int) TagCodes.End:
                    resTag = new End();
                    break;
                default:
                    resTag = new Tag(SWFBinary.ReadBytes(Convert.ToInt32(rh.TagLength + offset)));
                    break;
            }

            resTag.ReadData(SWFVersion, SWFBinary);

            return resTag;
        }