public static IdentifierCheckResult checkIdentifier(TSourceToken token, EDbVendor targetVendor) {
    IdentifierCheckResult checkResult = new IdentifierCheckResult(token, targetVendor);
    checkResult.addCheckRuleResult(checkSizeRule(token, targetVendor));
    checkResult.addCheckRuleResult(checkBeginWithRule(token, targetVendor));
    checkResult.addCheckRuleResult(checkSubsequentCharactersRule(token, targetVendor));
    checkResult.addCheckRuleResult(checkQuotedIdentifierRule(token, targetVendor));
    try {
      if (isFunction(token, targetVendor) != null) {
        checkResult.addCheckRuleResult(createFunctionRuleResult(token, targetVendor, true));
      } else if (isSpecial(token, targetVendor) != null) {
        checkResult.addCheckRuleResult(createSpecialRuleResult(token, targetVendor, true, null));
      } else {
        checkResult.addCheckRuleResult(checkKeywordRule(token, targetVendor));
      }
    } catch (FunctionIdentifierException e) {
      checkResult.addCheckRuleResult(createFunctionRuleResult(token, targetVendor, false));
    } catch (SpecialIdentifierException e) {
      checkResult.addCheckRuleResult(
          createSpecialRuleResult(token, targetVendor, false, e.getMessage()));
    }

    if (checkResult.canTranslate()) {
      checkResult.setTranslateResult(getTranslateResult(checkResult));
    }

    return checkResult;
  }