// Methods
        // Public interface
        public void Apply_Operation( CLobbyOperation operation )
        {
            switch ( operation.Type )
            {
                case ELobbyOperation.Member_Joined:
                    CLobbyMemberJoinedOperation join_operation = operation as CLobbyMemberJoinedOperation;
                    Apply_Member_Joined_Operation( join_operation );
                    break;

                case ELobbyOperation.Member_Left:
                    CLobbyMemberLeftOperation left_operation = operation as CLobbyMemberLeftOperation;
                    Apply_Member_Left_Operation( left_operation );
                    break;

                case ELobbyOperation.Member_Change_State:
                    CLobbyMemberChangeStateOperation change_state_operation = operation as CLobbyMemberChangeStateOperation;
                    Apply_Member_Change_State_Operation( change_state_operation );
                    break;

                case ELobbyOperation.Member_Moved:
                    CLobbyMemberMovedOperation move_operation = operation as CLobbyMemberMovedOperation;
                    Apply_Member_Moved_Operation( move_operation );
                    break;

                case ELobbyOperation.Members_Swapped:
                    CLobbyMembersSwappedOperation swap_operation = operation as CLobbyMembersSwappedOperation;
                    Apply_Members_Swapped_Operation( swap_operation );
                    break;

                case ELobbyOperation.Change_Game_Count:
                    CLobbyChangeGameCountOperation change_game_count_op = operation as CLobbyChangeGameCountOperation;
                    Apply_Change_Game_Count_Operation( change_game_count_op );
                    break;
            }
        }
 // Construction
 public CLobbyOperationMessage( CLobbyOperation operation )
     : base()
 {
     Operation = operation;
 }