code: @Override
  	public ProcessorChainLink<RESULT, FAILURE> newInstance(
  		Processor<RESULT, FAILURE> root, Processor<RESULT, FAILURE>... successors) {
  		
  		assertNotNull(root, new StringBuilder("The root ")
  		.append(Processor.class.getName())
  		.append(" cannot be <null>. This is used to construct the first ")
  		.append(ProcessorChainLink.class.getName())
  		.append(" in the processor-chain. ").toString());
  		
  		try {
  		
  			ProcessorChainLink<RESULT, FAILURE> chain = ProcessorChainLink.from(root);
  			
  			if(successors != null) {
  				
  				ProcessorChainLink<RESULT, FAILURE> current = chain;
  				
  				for (Processor<RESULT, FAILURE> successor : successors) {
  					
  					current = current.setSuccessor(ProcessorChainLink.from(successor));
  				}
  			}
  		
  			return chain;
  		}
  		catch(Exception e) {
  			
  			throw new ChainCreationException(e);
  		}
  	}
docs: <p>Creates a <b>processor-chain</b> using the given array of {@link Processor}s by wrapping each
  of them in an instance of {@link ProcessorChainLink} and linking them in the sequence reflected
  in the array.</p>
  
  @param root
  the {@link Processor} which will be the initial link in the processor-chain
  <br><br>
  @param successors
  further {@link Processor}s which will create the successive <i>links</i> in the chain
  <br><br>
  @return the root {@link ProcessorChainLink} of the chain which can be used to follow all successive
  links by invoking {@link ProcessorChainLink#getSuccessor()}
  <br><br>
  @throws IllegalArgumentException
  if the given <b>root</b> {@link Processor} is {@code null}
  <br><br>
  @throws ChainCreationException
  if the chain failed to be created using the given {@link Processor}s
  <br><br>
  @since 1.3.0