code: Filter<S> parseRoot() {
          Filter<S> filter = parseFilter();
          int c = nextCharIgnoreWhitespace();
          if (c >= 0) {
              mPos--;
              throw error("Unexpected trailing characters");
          }
          return filter;
      }
docs: all rolled into one. This is okay since the grammar is so simple.