docs: @SuppressWarnings({ "unchecked", "rawtypes" })
      private void initializeConfigurationOptionComponents(UIBuilder builder)
      {
          for (final ConfigurationOption option : WindupConfiguration.getWindupConfigurationOptions())
          {
              InputComponent<?, ?> inputComponent = null;
              switch (option.getUIType())
              {
              case SINGLE:
              {
                  UIInput<?> inputSingle = componentFactory.createInput(option.getName(), option.getType());
                  inputSingle.setDefaultValue(new DefaultValueAdapter(option));
                  inputComponent = inputSingle;
                  break;
              }
              case MANY:
              {
                  // forge can't handle "Path", so use File
                  Class<?> optionType = option.getType() == Path.class ? File.class : option.getType();
  
                  UIInputMany<?> inputMany = componentFactory.createInputMany(option.getName(), optionType);
                  inputMany.setDefaultValue(new DefaultValueAdapter(option, Iterable.class));
                  inputComponent = inputMany;
                  break;
              }
              case SELECT_MANY:
              {
                  UISelectMany<?> selectMany = componentFactory.createSelectMany(option.getName(), option.getType());
                  selectMany.setValueChoices((Iterable) option.getAvailableValues());
                  selectMany.setDefaultValue(new DefaultValueAdapter(option, Iterable.class));
                  inputComponent = selectMany;
                  break;
              }
              case SELECT_ONE:
              {
                  UISelectOne<?> selectOne = componentFactory.createSelectOne(option.getName(), option.getType());
                  selectOne.setValueChoices((Iterable) option.getAvailableValues());
                  selectOne.setDefaultValue(new DefaultValueAdapter(option));
                  inputComponent = selectOne;
                  break;
              }
              case DIRECTORY:
              {
                  UIInput<DirectoryResource> directoryInput = componentFactory.createInput(option.getName(),
                              DirectoryResource.class);
                  directoryInput.setDefaultValue(new DefaultValueAdapter(option, DirectoryResource.class));
                  inputComponent = directoryInput;
                  break;
              }
              case FILE:
              {
                  UIInput<?> fileInput = componentFactory.createInput(option.getName(), FileResource.class);
                  fileInput.setDefaultValue(new DefaultValueAdapter(option, FileResource.class));
                  inputComponent = fileInput;
                  break;
              }
              case FILE_OR_DIRECTORY:
              {
                  UIInput<?> fileOrDirInput = componentFactory.createInput(option.getName(), FileResource.class);
                  fileOrDirInput.setDefaultValue(new DefaultValueAdapter(option, FileResource.class));
                  inputComponent = fileOrDirInput;
                  break;
              }
              }
              if (inputComponent == null)
              {
                  throw new IllegalArgumentException("Could not build input component for: " + option);
              }
              inputComponent.setLabel(option.getLabel());
              inputComponent.setRequired(option.isRequired());
              inputComponent.setDescription(option.getDescription());
              builder.add(inputComponent);
              inputOptions.put(option, inputComponent);
          }
      }