code: @Override
  	public HttpRequestBase run(Object... args) {
  
  		assertLength(args, 2);
  		
  		return process(assertAssignable(assertNotNull(args[0]), InvocationContext.class),
  					   assertAssignable(assertNotNull(args[1]), HttpRequestBase.class));
  	}
docs: <p>Accepts an {@link InvocationContext} and a {@link HttpRequestBase}, validates all preconditions
  and uses the metadata contained within the configuration to process and subsequently build upon the
  request. Any implementations that wish to check additional preconditions or those that wish to alter
  this basic approach should override this method.</p>
  
  <p><b>Note</b> that this method is expected to return the {@link HttpRequestBase} which was processed
  using the implementation of {@link #process(InvocationContext, HttpRequestBase)}.</p>
  
  <p>Delegates to {@link #process(InvocationContext, HttpRequestBase)}.</p>
  
  <p>See {@link Processor#run(Object...)}.</p>
  
  @param args
  a array of <b>length 2</b> with an {@link InvocationContext} and a {@link HttpRequestBase}
  in that <b>exact order</b>
  <br><br>
  @return the {@link HttpRequestBase} processed using {@link #process(InvocationContext, HttpRequestBase)}
  <br><br>
  @throws IllegalArgumentException
  if the supplied arguments array is {@code null} or if the number of arguments does not
  equal 2, or if the arguments are not of the expected type
  <br><br>
  @throws RequestProcessorException
  if {@link #process(InvocationContext, HttpRequestBase)} failed for the {@link InvocationContext}
  and {@link HttpRequestBase}
  <br><br>
  @since 1.3.0