class PerReceiverActorSynchronizationReceiverCreator 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 item of actor synchronization receiver is not a receiver.", e);
        }

        try {
            IMessageReceiver synchronizedReceiver = IOC.resolve(Keys.getOrAdd("create actor synchronization receiver"), receiverItem);
            getListener().acceptItem(itemId, synchronizedReceiver);
        } catch (ResolutionException e) {
            throw new ReceiverObjectListenerException(e);
        }
    }

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

}