private static boolean validateMove(PGNMove move) {
    String strippedMove = move.getMove();

    if (move.isCastle()) {
      return true;
    } else if (move.isEndGameMarked()) {
      return true;
    } else if (strippedMove.length() == MOVE_TYPE_1_LENGTH) {
      return PGNParseUtils.matchType1(strippedMove);
    } else if (strippedMove.length() == MOVE_TYPE_2_LENGTH) {
      return PGNParseUtils.matchType2(strippedMove) || PGNParseUtils.matchType5(strippedMove);
    } else if (strippedMove.length() == MOVE_TYPE_3_LENGTH) {
      return PGNParseUtils.matchType3(strippedMove) || PGNParseUtils.matchType6(strippedMove);
    } else if (strippedMove.length() == MOVE_TYPE_4_LENGTH) {
      return PGNParseUtils.matchType4(strippedMove);
    }

    return false;
  }