public Opening()
        {
            this.Name = "Opening";

            this.Erodation = new Erodation();
            this.Dilatation = new Dilatation();

            this.Erodation.Out_SendMessage += (IEBCMessage message) => this.Dilatation.In_ReceiveMessage(message);
            this.Dilatation.Out_SendMessage += (IEBCMessage message) => this.OpeningFinished(message);

            this.Erodation.Out_EBCDebugMessage += (IEBCDebugMessage debugMessage)
                => this.OnOut_ShapeDebugMessage(debugMessage.DebugData);
            this.Dilatation.Out_EBCDebugMessage += (IEBCDebugMessage debugMessage)
                => this.OnOut_ShapeDebugMessage(debugMessage.DebugData);
        }
        public Closing()
        {
            this.Name = "Closing";

            this.Erodation = new Erodation();
            this.Dilatation = new Dilatation();

            // Normal message flow.
            this.Dilatation.Out_SendMessage += (IEBCMessage message) => this.Erodation.In_ReceiveMessage(message);
            this.Erodation.Out_SendMessage += (IEBCMessage message) => this.OpeningFinished(message);

            // Deubg messages.
            this.Erodation.Out_EBCDebugMessage += (IEBCDebugMessage debugMessage)
                => this.OnOut_ShapeDebugMessage(debugMessage.DebugData);
            this.Dilatation.Out_EBCDebugMessage += (IEBCDebugMessage debugMessage)
                => this.OnOut_ShapeDebugMessage(debugMessage.DebugData);
        }