private void checkMoveIsLegal(VerifyMove verifyMove){
    Map<String, Object> lastState = verifyMove.getLastState();
    // We use SetTurn, so we don't need to check that the correct player did the move.
    // However, we do need to check the first move is done by the white player (and then in the
    // first MakeMove we'll send SetTurn which will guarantee the correct player send MakeMove).
    if (lastState.isEmpty()){
      //Test Initial Move Here
      check(verifyMove.getLastMovePlayerId() == verifyMove.getPlayerIds().get(0));
      checkValidInitialMove(verifyMove);
    } else if (lastState.get(CURRENTMOVE) == CODE){
      //Test Code phase
      checkValidCodeMove(verifyMove);
    } else if (lastState.get(CURRENTMOVE) == GUESS){
      //Test Guess phase
      checkValidGuessMove(verifyMove);
    } else if (lastState.get(CURRENTMOVE) == FEEDBACK){
      //Test Feedback phase
      checkValidFeedBackMove(verifyMove);
    } else if (lastState.get(CURRENTMOVE) == VERIFY){
      //Test Validate phase
      checkValidVerifyMove(verifyMove);
    } else {
      check(false,"UNKNOWN CURRENTMOVE");
    }
  }