private List<MessageProcessor> cloneMessageProcessors(List<MessageProcessor> messageProcessors) { List<MessageProcessor> result = new ArrayList<>(messageProcessors.size()); for (MessageProcessor messageProcessor : messageProcessors) { if (messageProcessor instanceof CloneableMessageProcessor) { result.add(((CloneableMessageProcessor) messageProcessor).clone()); } else { result.add(messageProcessor); } } return result; } }