code: private Optional<MapLabelSetter> createField(final Class<?> beanClass, final String fieldName) {
          
          final String labelFieldName = fieldName + "Label";
          
          final Field labelField;
          try {
              labelField = beanClass.getDeclaredField(labelFieldName);
              labelField.setAccessible(true);
              
          } catch (NoSuchFieldException | SecurityException e) {
              return Optional.empty();
          }
          
          if(!Map.class.isAssignableFrom(labelField.getType())) {
              return Optional.empty();
          }
          
          final ParameterizedType type = (ParameterizedType) labelField.getGenericType();
          final Class<?> keyType = (Class<?>) type.getActualTypeArguments()[0];
          final Class<?> valueType = (Class<?>) type.getActualTypeArguments()[1];
          
          if(keyType.equals(String.class) && valueType.equals(String.class)) {
              
              return Optional.of(new MapLabelSetter() {
                  
                  @SuppressWarnings("unchecked")
                  @Override
                  public void set(final Object beanObj, final String label, final String key) {
                      ArgUtils.notNull(beanObj, "beanObj");
                      ArgUtils.notEmpty(label, "label");
                      
                     try {
                         Map<String, String> labelMapObj = (Map<String, String>) labelField.get(beanObj);
                         if(labelMapObj == null) {
                             labelMapObj = new LinkedHashMap<>();
                             labelField.set(beanObj, labelMapObj);
                         }
                         
                         
                         labelMapObj.put(key, label);
                         
                      } catch (IllegalArgumentException | IllegalAccessException e) {
                          throw new RuntimeException("fail access label field.", e);
                      }
                  }
              });
              
          }
          
          return Optional.empty();
      }
docs: フィールドによるラベル情報を格納する場合。
  <p>{@code <フィールド名> + Label}のメソッド名</p>
  
  @param beanClass フィールドが定義してあるクラスのインスタンス
  @param fieldName フィールド名
  @return ラベル情報の設定用クラス