public static <RESULT, FAILURE extends Throwable> 
	ProcessorChainLink<RESULT, FAILURE> from(Processor<RESULT, FAILURE> processor) {
		
		assertNotNull(processor, new StringBuilder("A ")
		.append(ProcessorChainLink.class.getName())
		.append(" cannot be instantiated with a <null> ")
		.append(Processor.class.getName()).toString());
		
		return new ProcessorChainLink<RESULT, FAILURE>(processor);
	}
public static < RESULT , FAILURE extends Throwable > ProcessorChainLink < RESULT , FAILURE > from ( Processor < RESULT , FAILURE > processor ) { assertNotNull ( processor , new StringBuilder ( "A " ) . append ( ProcessorChainLink . class . getName ( ) ) . append ( " cannot be instantiated with a <null> " ) . append ( Processor . class . getName ( ) ) . toString ( ) ) ; return new ProcessorChainLink < RESULT , FAILURE > ( processor ) ; }
<p>Creates a new {@link ProcessorChainLink} and wraps the given {@link Processor} which handles the
<i>execution</i> for this link in the chain.</p>

@param processor
the {@link Processor} to be wrapped by this instance of {@link ProcessorChainLink}
<br><br>
@return a new instance of {@link ProcessorChainLink} which wraps the provided {@link Processor}
<br><br>
@throws IllegalStateException
if the given {@link Processor} is {@code null}; a {@link ProcessorChainLink} must always
enclose a {@link Processor} which is invoked when the execution reaches this link in a chain
<br><br>
@since 1.3.0