code: public AbstractBaseDTNode<I, D> sift(Word<I> word, boolean hard) {
          return sift(root, word, hard);
      }
docs: Sifts an access sequence provided by an object into the tree, starting at the root. This can either be a "soft"
  sift, which stops either at the leaf <b>or</b> at the first temporary node, or a "hard" sift, stopping only at a
  leaf.
  
  @param word
  the object providing the access sequence
  @param hard
  flag, whether this should be a soft or a hard sift
  
  @return the leaf resulting from the sift operation