public ProcessorHandler(Class<? extends Processor>... processors) throws ProcessorException {
        // Check if 'processors' is NULL
        Objects.requireNonNull(processors, "The specified processors must not be Null");
        // Check if 'processors' is empty array
        if (processors.length <= 0) throw new IllegalArgumentException("At least one processor must be specified");
        // Create a new instance of the Processor and set it as local instance
        Class<? extends Processor> processorClass = processors[0];
        try {
            setProcessor(processorClass.newInstance());
        }
        catch (Exception e) {
            throw new ProcessorException("Processor '" + processorClass + "' could not be instantiated", e);
        }
        // Check if more than one processor is remaining
        if (processors.length > 1) {
            setSuccessor(new ProcessorHandler(Arrays.copyOfRange(processors, 1, processors.length)));
            getSuccessor().setPredecessor(this);
        }
    }