code: @Override
      public B addInputColumn(InputColumn<?> inputColumn, ConfiguredPropertyDescriptor propertyDescriptor)
              throws IllegalArgumentException {
          if (propertyDescriptor == null || !propertyDescriptor.isInputColumn()) {
              throw new IllegalArgumentException("Property is not of InputColumn type: " + propertyDescriptor);
          }
  
          final Class<?> expectedDataType = propertyDescriptor.getTypeArgument(0);
          if (expectedDataType != null && expectedDataType != Object.class) {
              // check input column type parameter compatibility
              final Class<?> actualDataType = inputColumn.getDataType();
              if (!ReflectionUtils.is(actualDataType, expectedDataType, false)) {
                  throw new IllegalArgumentException("Unsupported InputColumn type: " + actualDataType + ", expected: "
                          + expectedDataType);
              }
          }
  
          Object inputColumns = getConfiguredProperty(propertyDescriptor);
          if (inputColumns == null) {
              if (propertyDescriptor.isArray()) {
                  inputColumns = new InputColumn[] { inputColumn };
              } else {
                  inputColumns = inputColumn;
              }
          } else {
              inputColumns = CollectionUtils2.array(InputColumn.class, inputColumns, inputColumn);
          }
          setConfiguredProperty(propertyDescriptor, inputColumns);
          return (B) this;
      }
docs: delegate to