code: public String[] generateCodes(final String code, final String objectName, final String field, final Class<?> fieldType) {
          
          final String baseCode = getPrefix().isEmpty() ? code : getPrefix() + code;
          final List<String> codeList = new ArrayList<>();
          final List<String> fieldList = new ArrayList<>();
          buildFieldList(field, fieldList);
          
          addCodes(codeList, baseCode, objectName, fieldList);
          
          if(Utils.isNotEmpty(field)) {
              int dotIndex = field.lastIndexOf('.');
              if(dotIndex > 0) {
                  buildFieldList(field.substring(dotIndex + 1), fieldList);
              }
          }
          
          addCodes(codeList, code, null, fieldList);
          
          if(fieldType != null) {
              addCode(codeList, code, null, fieldType.getName());
              
              // 列挙型の場合は、java.lang.Enumとしてクラスタイプを追加する。
              if(Enum.class.isAssignableFrom(fieldType)) {
                  addCode(codeList, code, null, Enum.class.getName());
              }
              
              // 数値型の場合は、java.lang.Numberとしてクラスタイプを追加する。
              if(Number.class.isAssignableFrom(fieldType)) {
                  addCode(codeList, code, null, Number.class.getName());
              }
          }
          
          addCode(codeList, code, null, null);
          
          return codeList.toArray(new String[codeList.size()]);
      }
docs: キーの候補を生成する。
  <p>コンテキストのキーの形式として、次の優先順位に一致したものを返す。
  
  @param code 元となるメッセージのコード
  @param objectName オブジェクト名（クラスのフルパス）
  @param field フィールド名 （指定しない場合はnullを設定する）
  @param fieldType フィールドのクラスタイプ（指定しない場合はnullを設定する）
  @return