public static Pattern<DeleteNode> delete() { return typeOf(DeleteNode.class); }
public static Pattern<EnforceSingleRowNode> enforceSingleRow() { return typeOf(EnforceSingleRowNode.class); }
public static Pattern<SortNode> sort() { return typeOf(SortNode.class); }
public static Pattern<IndexSourceNode> indexSource() { return typeOf(IndexSourceNode.class); }
public static Pattern<UnionNode> union() { return typeOf(UnionNode.class); }
public static Pattern<SpatialJoinNode> spatialJoin() { return typeOf(SpatialJoinNode.class); }
public static Pattern<LimitNode> limit() { return typeOf(LimitNode.class); }
public static Pattern<ProjectNode> project() { return typeOf(ProjectNode.class); }
public static Pattern<SampleNode> sample() { return typeOf(SampleNode.class); }
public static Pattern<Object> any() { return typeOf(Object.class); }
public static Pattern<ApplyNode> applyNode() { return typeOf(ApplyNode.class); }
public static Pattern<MarkDistinctNode> markDistinct() { return typeOf(MarkDistinctNode.class); }
public static Pattern<TopNNode> topN() { return typeOf(TopNNode.class); }
public static Pattern<WindowNode> window() { return typeOf(WindowNode.class); }
public static Pattern<RowNumberNode> rowNumber() { return typeOf(RowNumberNode.class); }
@Override public Pattern<PlanNode> getPattern() { return Pattern.typeOf(PlanNode.class); }
@Override public Pattern<PlanNode> getPattern() { return Pattern.typeOf(PlanNode.class); }
public static Pattern<ScanNode> scan() { return typeOf(ScanNode.class); }
public static Pattern<FilterNode> filter() { return typeOf(FilterNode.class); }
@Test public void matchAdditionalProperties() { String matchedValue = "A little string."; Pattern<String> pattern = typeOf(String.class) .matching(s -> s.startsWith("A")) .matching((CharSequence s) -> s.length() > 7); assertMatch(pattern, matchedValue); }