class MultiPathMapper implements Mapper {

    @Override
    public Expression expressionForKey(Object key) {

        Map<String, Object> keyMap = (Map<String, Object>) key;

        List<Expression> clauses = new ArrayList<>(pathMappers.size());

        for (Entry<String, Mapper> e : pathMappers.entrySet()) {
            Object value = keyMap.get(e.getKey());
            clauses.add(e.getValue().expressionForKey(value));
        }

        return joinExp(Expression.AND, clauses);
    }

    public  MultiPathMapper(Map<String, Mapper> pathMappers);

}