class MessageDispatcher {

    public MessagePromise expect(String messageId, Set<Predicate> predicates) {
        Reject.ifTrue(StringUtils.isBlank(messageId));
        Reject.ifNull(predicates);
        MessagePromise mp = new MessagePromise(PromiseImpl.<JsonValue, Exception>create(), predicates);
        cache.put(messageId, mp);
        return mp;
    }

    @Inject public  MessageDispatcher(Cache<String, MessagePromise> dispatch, @Named("frPush") Debug debug);

}