public override void  defineFunction(DefineFunction action)
        {
            int updatePos = encodeActionHeader(action);

            writer.writeString(action.name);
            writer.writeUI16(action.params_Renamed.Length);
            for (int i = 0; i < action.params_Renamed.Length; i++)
            {
                writer.writeString(action.params_Renamed[i]);
            }
            int pos = writer.Pos;

            writer.writeUI16(0);             // codesize placeholder
            updateActionHeader(updatePos);

            new ActionEncoder(writer, debug).encode(action.actionList);

            writer.writeUI16at(pos, (writer.Pos - pos) - 2);
        }
		public override void  defineFunction2(DefineFunction action)
		{
			int updatePos = encodeActionHeader(action);
			writer.writeString(action.name);
			writer.writeUI16(action.params_Renamed.Length);
			writer.writeUI8(action.regCount);
			writer.writeUI16(action.flags);
			
			for (int i = 0; i < action.params_Renamed.Length; i++)
			{
				writer.writeUI8(action.paramReg[i]);
				writer.writeString(action.params_Renamed[i]);
			}
			
			int pos = writer.Pos;
			writer.writeUI16(0); // placeholder
			updateActionHeader(updatePos);
			
			new ActionEncoder(writer, debug).encode(action.actionList);
			
			writer.writeUI16at(pos, (writer.Pos - pos) - 2);
		}