code: private boolean findInList(int[] hashcodes, int[] lengths, FilterCellFastStr cell, int index) {
  
          if (cell.getWildcardCell() != null) {
              // a wildcard, match found
              return true;
          }
          // no wildcard so far, see if there is a still a path
          FilterCellFastStr nextCell = cell.findNextCellWithLength(hashcodes[index], lengths[index]);
          if (nextCell != null) {
              // see if we are at the end of a valid path
              if (index == 0) {
                  // this path found a match, unwind returning true
                  return true;
              }
              // ok so far, recursively search this path
              return findInList(hashcodes, lengths, nextCell, index - 1);
          }
          // this path did not find a match.
          return false;
      }
docs: Determine, recursively, if an string is in the address tree. The string is
  to be represented by an array of hashcodes where the 0th index in the array
  is the hashcode of the rightmost substring of the address. A substring is
  the characters between two periods (".") in an address. The string is
  also represented by an array of lengths, where the 0th index in the array
  is the length of the rightmost substring. If hashcodes an length match each
  for each entry in the arrays, with a path through the address tree, then
  the address is found in the tree.
  
  @param hashcodes
  - array of hashcodes of the substrings of the address to find
  @param lengths
  - array of lengths of the substrings of the address to find
  @param cell
  - the current cell that is being traversed in the address tree
  @param index
  - the next index into the arrays that is to be matched against the
  tree
  @return true if this address is found in the address tree, false if
  it is not.