// Constructor parses a message string into a BoardState object.
            // Throws an exception if the message string does not represent a
            // valid BoardState message.
            public BoardState(string msg)
            {
                if (!GameMessage.IsBoardState(msg))
                    throw new Exception("This is not a BoardState message.");

                // Remove all whitespace from the message string.
                string msgString = RemoveAllWhiteSpace(msg);

                this.data = msgString;

                // Strip packet wrapper.
                string boardString = GameMessage.GetMessageData(msg);

                boardString = boardString.Substring(1, boardString.Length - 2);

                this.board = GetBoardStateFromString(msgString);
            }
            // Parse a message string into a SkeletonBoard object.
            private SkeletonBoard GetBoardStateFromString(string msg)
            {
                SkeletonBoard board = new SkeletonBoard();

                // Strip packet wrapper.
                string boardString = SkeletonMessage.GetMessageData(msg);

                boardString = boardString.Substring(1, boardString.Length - 2);

                // Parse the string
                throw new Exception("TODO");
            }
            // Constructor to instantiate a new BoardState based on the
            // specified SkeletonBoard object.
            public BoardState(SkeletonBoard aBoard)
            {
                this.data = GetStringFromBoardState(aBoard);

                this.board = (SkeletonBoard)aBoard.Copy();
            }