code: public static InputColumn<?> getIdentifyingInputColumn(final ComponentJob o) {
          final ComponentDescriptor<?> descriptor = o.getDescriptor();
          if (descriptor instanceof BeanDescriptor) {
              final BeanDescriptor<?> beanDescriptor = (BeanDescriptor<?>) descriptor;
              final Set<ConfiguredPropertyDescriptor> inputProperties = beanDescriptor.getConfiguredPropertiesForInput(false);
              if (inputProperties.size() != 1) {
                  return null;
              }
              
              final ConfigurableBeanJob<?> configurableBeanJob = (ConfigurableBeanJob<?>) o;
              
              final ConfiguredPropertyDescriptor inputProperty = inputProperties.iterator().next();
              final Object input = configurableBeanJob.getConfiguration().getProperty(inputProperty);
  
              if (input instanceof InputColumn) {
                  final InputColumn<?> inputColumn = (InputColumn<?>) input;
                  return inputColumn;
              } else if (input instanceof InputColumn[]) {
                  final InputColumn<?>[] inputColumns = (InputColumn[]) input;
                  if (inputColumns.length != 1) {
                      return null;
                  }
                  return inputColumns[0];
              }
              return null;
          }
          return null;
      }
docs: Gets the identifying input column of an {@link ComponentJob}, if there is
  such a column. With an identifying input column, a externalizable
  reference to the {@link ComponentJob} can be build, based on the
  descriptor name, component name and the identifying column.
  
  @param o
  @return