code: protected ComponentBuilder addComponent(final ComponentJob componentJob) {
          final ComponentDescriptor<?> descriptor = componentJob.getDescriptor();
          final ComponentBuilder builder = addComponent(descriptor);
  
          builder.setName(componentJob.getName());
          builder.setConfiguredProperties(componentJob.getConfiguration());
          builder.setMetadataProperties(componentJob.getMetadataProperties());
  
          if (componentJob instanceof InputColumnSourceJob) {
              final InputColumn<?>[] output = ((InputColumnSourceJob) componentJob).getOutput();
  
              final TransformerComponentBuilder<?> transformerJobBuilder = (TransformerComponentBuilder<?>) builder;
              final List<MutableInputColumn<?>> outputColumns = transformerJobBuilder.getOutputColumns();
  
              assert output.length == outputColumns.size();
  
              for (int i = 0; i < output.length; i++) {
                  final MutableInputColumn<?> mutableOutputColumn = outputColumns.get(i);
                  mutableOutputColumn.setName(output[i].getName());
              }
          }
  
          return builder;
      }
docs: Creates a component builder similar to the incoming {@link ComponentJob}.
  Note that input (columns and requirements) will not be mapped since these
  depend on the context of the {@link FilterJob} and may not be matched in
  the {@link AnalysisJobBuilder}.
  
  @param componentJob
  
  @return the builder object for the specific component