class WithPropertyPattern<T> extends Pattern<T> {

    private final Pattern<T> pattern;
    private final Predicate<? super T> propertyPredicate;

    WithPropertyPattern(Pattern<T> pattern, Predicate<? super T> propertyPredicate) {
        this.pattern = pattern;
        this.propertyPredicate = propertyPredicate;
    }

    @Override
    public Match<T> accept(Object object, Captures captures, UnaryOperator<LogicalPlan> resolvePlan) {<FILL_FUNCTION_BODY>}
}

        Match<T> match = pattern.accept(object, captures, resolvePlan);
        return match.flatMap(matchedValue -> {
            if (propertyPredicate.test(matchedValue)) {
                return match;
            } else {
                return Match.empty();
            }
        });
    
<methods>public non-sealed void <init>() ,public abstract Match<T> accept(java.lang.Object, io.crate.planner.optimizer.matcher.Captures, UnaryOperator<io.crate.planner.operators.LogicalPlan>) ,public Match<T> accept(java.lang.Object, io.crate.planner.optimizer.matcher.Captures) ,public Pattern<T> capturedAs(Capture<T>) ,public static Pattern<T> typeOf(Class<T>) ,public Pattern<T> with(Function<? super T,Optional<U>>, Pattern<V>) ,public Pattern<T> with(Predicate<? super T>) <variables>