class ActorCollectionReceiver implements IMessageReceiver {

    @Override
    public void receive(final IMessageProcessor processor)
            throws MessageReceiveException, AsynchronousOperationException {
        try {
            IObject stepConf = processor.getSequence().getCurrentReceiverArguments();

            IFieldName fieldNameForKeyName = IOC.resolve(
                    Keys.getOrAdd("info.smart_tools.smartactors.iobject.ifield_name.IFieldName"),
                    stepConf.getValue(this.keyFieldName));

            Object id =  processor.getEnvironment().getValue(fieldNameForKeyName);

            IMessageReceiver child = resolveReceiver(id, stepConf);

            try {
                child.receive(processor);
            } catch (MessageReceiveException e) {
                throw new MessageReceiveException(
                        MessageFormat.format("Error occurred in child receiver for key \"{0}\"", id), e);
            }
        } catch (ReadValueException | ResolutionException | InvalidArgumentException e) {
            throw new MessageReceiveException("Could not execute ActorCollectionReceiver.receive.", e);
        }
    }

    public  ActorCollectionReceiver(final Map<Object, IMessageReceiver> childStorage);

}