code: public Stream<HString> findAll(@NonNull String text) {
        return Streams.asStream(new Iterator<HString>() {
           Integer pos = null;
           int start = 0;
  
           private boolean advance() {
              if (pos == null) {
                 pos = indexOf(text, start);
              }
              return pos != -1;
           }
  
           @Override
           public boolean hasNext() {
              return advance();
           }
  
           @Override
           public HString next() {
              if (!advance()) {
                 throw new NoSuchElementException();
              }
              int n = pos;
              pos = null;
              start = n + 1;
              //If we have tokens expand the match to the overlaping tokens.
              if (document() != null && document().isCompleted(Types.TOKEN)) {
                 return union(substring(n, n + text.length()).tokens());
              }
              return substring(n, n + text.length());
           }
        });
     }
docs: Finds all occurrences of the given text in this HString starting
  
  @param text the text to search for
  @return A list of HString that are matches to the given string