@@ -0,0 +1,1455 @@
+package com.pressassociation.fire.partialresponse.fields.match;%0A%0Aimport com.google.common.base.Predicate;%0Aimport com.google.common.base.Splitter;%0Aimport com.pressassociation.fire.partialresponse.fields.ast.AstNode;%0Aimport com.pressassociation.fire.partialresponse.fields.ast.visitor.MatchesPathVisitor;%0Aimport com.pressassociation.fire.partialresponse.fields.parser.Parser;%0A%0Aimport javax.annotation.Nullable;%0A%0Aimport static com.google.common.base.Preconditions.checkNotNull;%0A%0A/**%0A * A Matcher that will match against some AstNode a CharSequence.%0A *%0A * @author Matt Nathan%0A */%0Apublic class Matcher implements Predicate%3CCharSequence%3E %7B%0A%0A  /**%0A   * Get a new Matcher that will match against the given fields string. The string should be a valid fields string,%0A   * something like %7B@code items/name(type,value)%7D.%0A   *%0A   * @param fields The fields string%0A   * @return The matcher.%0A   */%0A  public static Matcher valueOf(CharSequence fields) %7B%0A    return new Matcher(new Parser().parse(checkNotNull(fields)));%0A  %7D%0A%0A  private static final Splitter PATH_SPLITTER = Splitter.on('/').omitEmptyStrings();%0A  private final AstNode fields;%0A%0A  public Matcher(AstNode fields) %7B%0A    this.fields = checkNotNull(fields);%0A  %7D%0A%0A  public boolean matches(CharSequence input) %7B%0A    return new MatchesPathVisitor(PATH_SPLITTER.split(input)).applyTo(fields);%0A  %7D%0A%0A  @Override%0A  public boolean apply(@Nullable CharSequence input) %7B%0A    return input != null && matches(input);%0A  %7D%0A%7D%0A

Add a helper class, Matcher, that will match a number of paths against a single Ast