code: public String resolve(
        EntityDesc entityDesc, String propertyName, String defaultPropertyClassName) {
      String qualifiedPropertyName = entityDesc.getQualifiedName() + "@" + propertyName;
      for (Map.Entry<Pattern, String> entry : patternMap.entrySet()) {
        Pattern pattern = entry.getKey();
        String input = pattern.pattern().contains("@") ? qualifiedPropertyName : propertyName;
        Matcher matcher = pattern.matcher(input);
        if (!matcher.matches()) {
          continue;
        }
        matcher.reset();
        StringBuffer buf = new StringBuffer();
        String replacement = entry.getValue();
        for (; matcher.find(); ) {
          matcher.appendReplacement(buf, replacement);
          if (matcher.hitEnd()) {
            break;
          }
        }
        matcher.appendTail(buf);
        return buf.toString();
      }
      return defaultPropertyClassName;
    }
docs: エンティティプロパティのクラス名を解決します。
  
  @param entityDesc エンティティ記述
  @param propertyName エンティティプロパティ名
  @param defaultPropertyClassName エンティティプロパティのデフォルトのクラス名
  @return エンティティプロパティのクラス名