public void  setRegister(int offset, RegisterRecord record)
        {
            int i = offset - startOffset;

            if (registers[i] == null)
            {
                count++;
            }
            registers[i] = record;
        }
		public void  setRegister(int offset, RegisterRecord record)
		{
			int i = offset - startOffset;
			if (registers[i] == null)
				count++;
			registers[i] = record;
		}
        private void  decodeAction(int opcode, int offset, ActionFactory factory)
        {
            LineRecord line = debug != null?debug.getLine(offset) : null;

            if (line != null)
            {
                factory.setLine(offset, line);
            }

            // interleave register records in the action list
            RegisterRecord record = (debug != null)?debug.getRegisters(offset):null;

            if (record != null)
            {
                factory.setRegister(offset, record);
            }

            Action a;

            if (opcode < 0x80)
            {
                a = ActionFactory.createAction(opcode);
                factory.setAction(offset, a);
                return;
            }

            int len = reader.readUI16();
            int pos = offset + 3;

            switch (opcode)
            {
            case Flash.Swf.ActionConstants.sactionDefineFunction:
                a = decodeDefineFunction(pos, len);
                factory.setAction(offset, a);
                return;


            case Flash.Swf.ActionConstants.sactionDefineFunction2:
                a = decodeDefineFunction2(pos, len);
                factory.setAction(offset, a);
                return;


            case Flash.Swf.ActionConstants.sactionWith:
                a = decodeWith(factory);
                break;


            case Flash.Swf.ActionConstants.sactionTry:
                a = decodeTry(factory);
                break;


            case Flash.Swf.ActionConstants.sactionPush:
                Push p = decodePush(offset, pos + len, factory);
                checkConsumed(pos, len, p);
                return;


            case Flash.Swf.ActionConstants.sactionStrictMode:
                a = decodeStrictMode();
                break;


            case Flash.Swf.ActionConstants.sactionCall:
                // this actions opcode has the high bit set, but there is no length.  considered a permanent bug.
                a = ActionFactory.createCall();
                break;


            case Flash.Swf.ActionConstants.sactionGotoFrame:
                a = decodeGotoFrame();
                break;


            case Flash.Swf.ActionConstants.sactionGetURL:
                a = decodeGetURL();
                break;


            case Flash.Swf.ActionConstants.sactionStoreRegister:
                a = decodeStoreRegister();
                break;


            case Flash.Swf.ActionConstants.sactionConstantPool:
                a = decodeConstantPool();
                break;


            case Flash.Swf.ActionConstants.sactionWaitForFrame:
                a = decodeWaitForFrame(opcode, factory);
                break;


            case Flash.Swf.ActionConstants.sactionSetTarget:
                a = decodeSetTarget();
                break;


            case Flash.Swf.ActionConstants.sactionGotoLabel:
                a = decodeGotoLabel();
                break;


            case Flash.Swf.ActionConstants.sactionWaitForFrame2:
                a = decodeWaitForFrame(opcode, factory);
                break;


            case Flash.Swf.ActionConstants.sactionGetURL2:
                a = decodeGetURL2();
                break;


            case Flash.Swf.ActionConstants.sactionJump:
            case Flash.Swf.ActionConstants.sactionIf:
                a = decodeBranch(opcode, factory);
                break;


            case Flash.Swf.ActionConstants.sactionGotoFrame2:
                a = decodeGotoFrame2();
                break;


            default:
                a = decodeUnknown(opcode, len);
                break;
            }
            checkConsumed(pos, len, a);
            factory.setAction(offset, a);
        }