code: void findSetFor(String s, RBBINode node, UnicodeSet setToAdopt) {
  
          RBBISetTableEl el;
  
          // First check whether we've already cached a set for this string.
          // If so, just use the cached set in the new node.
          //   delete any set provided by the caller, since we own it.
          el = fSetTable.get(s);
          if (el != null) {
              node.fLeftChild = el.val;
              Assert.assrt(node.fLeftChild.fType == RBBINode.uset);
              return;
          }
  
          // Haven't seen this set before.
          // If the caller didn't provide us with a prebuilt set,
          //   create a new UnicodeSet now.
          if (setToAdopt == null) {
              if (s.equals(kAny)) {
                  setToAdopt = new UnicodeSet(0x000000, 0x10ffff);
              } else {
                  int c;
                  c = UTF16.charAt(s, 0);
                  setToAdopt = new UnicodeSet(c, c);
              }
          }
  
          //
          // Make a new uset node to refer to this UnicodeSet
          // This new uset node becomes the child of the caller's setReference
          // node.
          //
          RBBINode usetNode = new RBBINode(RBBINode.uset);
          usetNode.fInputSet = setToAdopt;
          usetNode.fParent = node;
          node.fLeftChild = usetNode;
          usetNode.fText = s;
  
          //
          // Add the new uset node to the list of all uset nodes.
          //
          fRB.fUSetNodes.add(usetNode);
  
          //
          // Add the new set to the set hash table.
          //
          el = new RBBISetTableEl();
          el.key = s;
          el.val = usetNode;
          fSetTable.put(el.key, el);
  
          return;
      }
docs: ----------------------------------------------------------------------------------------