code: public RuleSet getRuleTree(String surt) {
          RuleSet rules = new RuleSet();
          
          // add the root SURT
          rules.addAll(getRulesWithExactSurt("("));
          
          boolean first = true;
          for (String search: new NewSurtTokenizer(surt).getSearchList()) {
              if (first) {
                  first = false;
                  rules.addAll(getRulesWithSurtPrefix(search));
              } else {
                  rules.addAll(getRulesWithExactSurt(search));
              }
          }
          
          return rules;
      }
docs: Returns the "rule tree" for a given SURT. This is a sorted set of all
  rules equal or lower in specificity than the given SURT plus all rules on
  the path from this SURT to the root SURT "(".
  
  The intention is to call this function with a domain or public suffix,
  then queries within that domain can be made very fast by searching the
  resulting list.
  
  @param surt
  @return