public AccessControl_ReceiveFSM(urn_jaus_jss_core_Transport_1_1.Transport_ReceiveFSM pTransport_ReceiveFSM, urn_jaus_jss_core_Events_1_1.Events_ReceiveFSM pEvents_ReceiveFSM)
        {
            /*
             * If there are other variables, context must be constructed last so that all
             * class variables are available if an EntryAction of the InitialState of the
             * statemachine needs them.
                 */
                context = new AccessControl_ReceiveFSMContext(this);

            this.pTransport_ReceiveFSM = pTransport_ReceiveFSM;
            this.pEvents_ReceiveFSM = pEvents_ReceiveFSM;
        }
 protected internal virtual void InternalStateChange_To_AccessControl_ReceiveFSM_Receiving_Ready_NotControlled_NotAvailableTransition(AccessControl_ReceiveFSMContext context, InternalEvent ie)
 {
     Default(context);
 }
 protected internal virtual void InternalStateChange_To_AccessControl_ReceiveFSM_ReceivingTransition(AccessControl_ReceiveFSMContext context, InternalEvent ie)
 {
     Default(context);
 }
 protected internal virtual void Exit(AccessControl_ReceiveFSMContext context)
 {
 }
                protected internal override void ReceiveTransition(AccessControl_ReceiveFSMContext context, ReleaseControl msg, Receive.Body.ReceiveRec transportData)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_Controlled_Available.ReceiveTransition(, ReleaseControl msg, Receive.Body.ReceiveRec transportData)");
                    #endif

                    if (ctxt.isControllingClient( transportData ))
                    {

                        context.State.Exit(context);
                        context.ClearState();

                        try
                        {
                            ctxt.SendAction("RejectControl", "CONTROL_RELEASED", transportData);
                            ctxt.initAction();
                            ctxt.processNotifications("Receiving_Ready_NotControlled_Available", null);
                        }
                        finally
                        {
                            context.State = AccessControl_ReceiveFSM_SM.Receiving_Ready_NotControlled_Available;
                            context.State.Entry(context);
                        }

                    }
                    else                    {
                        base.ReceiveTransition(context, msg, transportData);
                    }

                    return;
                }
                protected internal override void UpdateEventTransition(AccessControl_ReceiveFSMContext context)
                {
                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Internally_Generated_State_DO_NOT_USE.UpdateEventTransition()");
                    #endif

                    return;
                }
 protected internal virtual void SetAuthorityTransition(AccessControl_ReceiveFSMContext context)
 {
     Default(context);
 }
 protected internal virtual void ReceiveTransition(AccessControl_ReceiveFSMContext context, SetAuthority msg, Receive.Body.ReceiveRec transportData)
 {
     Default(context);
 }
                protected internal override void ReceiveTransition(AccessControl_ReceiveFSMContext context, RequestControl msg, Receive.Body.ReceiveRec transportData)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_NotControlled_NotAvailable.ReceiveTransition(, RequestControl msg, Receive.Body.ReceiveRec transportData)");
                    #endif

                    AccessControl_ReceiveFSMState endState = context.State;

                    context.ClearState();

                    try
                    {
                        ctxt.SendAction("ConfirmControl", "NOT_AVAILABLE", transportData);
                    }
                    finally
                    {
                        context.State = endState;
                    }

                    return;
                }
                protected internal override void ReceiveTransition(AccessControl_ReceiveFSMContext context, RequestControl msg, Receive.Body.ReceiveRec transportData)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_NotControlled_Available.ReceiveTransition(, RequestControl msg, Receive.Body.ReceiveRec transportData)");
                    #endif

                    if (ctxt.isDefaultAuthorityGreater(msg))
                    {
                        AccessControl_ReceiveFSMState endState = context.State;

                        context.ClearState();

                        try
                        {
                            ctxt.SendAction("ConfirmControl", "INSUFFICIENT_AUTHORITY", transportData);
                        }
                        finally
                        {
                            context.State = endState;
                        }

                    }
                    else if (! ctxt.isDefaultAuthorityGreater(msg))
                    {

                        context.State.Exit(context);
                        context.ClearState();

                        try
                        {
                            ctxt.StoreAddressAction(transportData);
                            ctxt.SetAuthorityAction(msg);
                            ctxt.ResetTimerAction();
                            ctxt.SendAction("ConfirmControl", "CONTROL_ACCEPTED", transportData);
                            ctxt.processNotifications("Receiving_Ready_Controlled_Available", null);
                        }
                        finally
                        {
                            context.State = AccessControl_ReceiveFSM_SM.Receiving_Ready_Controlled_Available;
                            context.State.Entry(context);
                        }

                    }                    else                    {
                        base.ReceiveTransition(context, msg, transportData);
                    }

                    return;
                }
                protected internal override void ReceiveTransition(AccessControl_ReceiveFSMContext context, QueryAuthority msg, Receive.Body.ReceiveRec transportData)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_NotControlled_Available.ReceiveTransition(, QueryAuthority msg, Receive.Body.ReceiveRec transportData)");
                    #endif

                    AccessControl_ReceiveFSMState endState = context.State;

                    context.ClearState();

                    try
                    {
                        ctxt.SendAction("ReportAuthority", transportData);
                    }
                    finally
                    {
                        context.State = endState;
                    }

                    return;
                }
                protected internal override void TimeoutTransition(AccessControl_ReceiveFSMContext context)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_Controlled_NotAvailable.TimeoutTransition()");
                    #endif

                    AccessControl_ReceiveFSMState endState = context.State;

                    context.ClearState();

                    try
                    {
                        ctxt.resetTimerAction();
                    }
                    finally
                    {
                        context.State = endState;
                    }

                    return;
                }
                protected internal override void ReceiveTransition(AccessControl_ReceiveFSMContext context, SetAuthority msg, Receive.Body.ReceiveRec transportData)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_Controlled_NotAvailable.ReceiveTransition(, SetAuthority msg, Receive.Body.ReceiveRec transportData)");
                    #endif

                    if (ctxt.isAuthorityValid(msg) && ctxt.isControllingClient( transportData ))
                    {
                        AccessControl_ReceiveFSMState endState = context.State;

                        context.ClearState();

                        try
                        {
                            ctxt.SetAuthorityAction(msg);
                        }
                        finally
                        {
                            context.State = endState;
                        }

                    }
                    else                    {
                        base.ReceiveTransition(context, msg, transportData);
                    }

                    return;
                }
                protected internal override void TimeoutTransition(AccessControl_ReceiveFSMContext context)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_Controlled_Available.TimeoutTransition()");
                    #endif

                    context.State.Exit(context);
                    context.ClearState();

                    try
                    {
                        ctxt.SendAction("RejectControl", "CONTROL_RELEASED");
                        ctxt.initAction();
                        ctxt.processNotifications("Receiving_Ready_NotControlled_Available", null);
                    }
                    finally
                    {
                        context.State = AccessControl_ReceiveFSM_SM.Receiving_Ready_NotControlled_Available;
                        context.State.Entry(context);
                    }

                    return;
                }
 protected internal virtual void QueryTimeoutTransition(AccessControl_ReceiveFSMContext context)
 {
     Default(context);
 }
 protected internal virtual void ReceiveTransition(AccessControl_ReceiveFSMContext context, QueryTimeout msg, Receive.Body.ReceiveRec transportData)
 {
     Default(context);
 }
 protected internal virtual void BroadcastLocalTransition(AccessControl_ReceiveFSMContext context)
 {
     Default(context);
 }
 protected internal virtual void RequestControlTransition(AccessControl_ReceiveFSMContext context)
 {
     Default(context);
 }
 protected internal virtual void CommandExpiredTransition(AccessControl_ReceiveFSMContext context)
 {
     Default(context);
 }
 protected internal virtual void UpdateEventTransition(AccessControl_ReceiveFSMContext context)
 {
     Default(context);
 }
 protected internal virtual void Default(AccessControl_ReceiveFSMContext context)
 {
     #if TRACE
     Trace.WriteLine(
         "TRANSITION : Default");
     #endif
     throw (
         new statemap.TransitionUndefinedException(
             "State: " +
             context.State.Name +
             ", Transition: " +
             context.GetTransition()));
 }
                protected internal override void InternalStateChange_To_AccessControl_ReceiveFSM_Receiving_Ready_NotControlled_AvailableTransition(AccessControl_ReceiveFSMContext context, InternalEvent ie)
                {
                    AccessControl_ReceiveFSM ctxt = context.Owner;

                    #if TRACE
                    Trace.WriteLine(
                        "TRANSITION   : AccessControl_ReceiveFSM_SM.Receiving_Ready_Controlled_Available.InternalStateChange_To_AccessControl_ReceiveFSM_Receiving_Ready_NotControlled_AvailableTransition(, InternalEvent ie)");
                    #endif

                    context.State.Exit(context);
                    context.ClearState();

                    try
                    {
                        ctxt.initAction();
                        ctxt.processNotifications("Receiving_Ready_NotControlled_Available", ie);
                    }
                    finally
                    {
                        context.State = AccessControl_ReceiveFSM_SM.Receiving_Ready_NotControlled_Available;
                        context.State.Entry(context);
                    }

                    return;
                }
 protected internal virtual void EventOccurredTransition(AccessControl_ReceiveFSMContext context)
 {
     Default(context);
 }