class PathValueProvider extends ValueProvider {

    @Override
    public Object get(PredicateContext context) {
        Object result = context.resolve(reference);
        try {
            for (MethodHandle handle : handles) {
                result = handle.bindTo(result).invoke();
            }
        } catch (Throwable throwable) {
            throw new IllegalStateException(String.format("Can't evaluate path '%s.%s'", reference, path), throwable);
        }
        return result;
    }

    public  PathValueProvider(Class<?> type, String reference, String path);

}