class UserObjectMethodInvokerReceiverCreator extends BasicIntermediateReceiverObjectCreator {

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

        try {
            for (Method method : item.getClass().getDeclaredMethods()) {
                if (method.isSynthetic() || !Modifier.isPublic(method.getModifiers())) {
                    continue;
                }

                IMessageReceiver methodInvoker = IOC.resolve(
                        Keys.getOrAdd("method invoker receiver"),
                        item,
                        method,
                        getFilterConfig()
                );

                getListener().acceptItem(method.getName(), methodInvoker);
            }
        } catch (ResolutionException e) {
            throw new ReceiverObjectListenerException(e);
        }
    }

    public  UserObjectMethodInvokerReceiverCreator(
            final IReceiverObjectCreator underlyingObjectCreator,
            final IObject filterConfig,
            final IObject objectConfig);

}