class HandlerRouterReceiverCreator extends BasicIntermediateReceiverObjectCreator {

    @Override
    public void acceptItem(Object itemId, Object item)
            throws ReceiverObjectListenerException, InvalidReceiverPipelineException, InvalidArgumentException {
        if (null == item) {
            throw new InvalidArgumentException("Item is null.");
        }

        IMessageReceiver receiverItem;

        try {
            receiverItem = (IMessageReceiver) item;
        } catch (ClassCastException e) {
            throw new InvalidReceiverPipelineException("Underlying object is not a receiver.", e);
        }

        if (null == itemId) {
            throw new InvalidReceiverPipelineException("Underlying object has no identifier.");
        }

        if (null != handlersMap.put(itemId, receiverItem)) {
            throw new InvalidReceiverPipelineException("Duplicate underlying object identifier: " + String.valueOf(itemId));
        }
    }

    public  HandlerRouterReceiverCreator(IReceiverObjectCreator underlyingObjectCreator, IObject filterConfig, IObject objectConfig);

}