class MessageProcessor implements ITask, IMessageProcessor, IManagedTask, IShutdownAwareTask {

    @Override
    public <T> T getAs(final Class<T> clazz) throws InvalidArgumentException {
        if (!clazz.isInstance(this)) {
            throw new InvalidArgumentException("Cannot represent message processor as " + clazz.getCanonicalName());
        }

        return (T) this;
    }

    public  MessageProcessor(final IQueue<ITask> taskQueue, final IMessageProcessingSequence messageProcessingSequence, final IObject config);

}