code: private AbstractBaseDTNode<I, D> updateDTTarget(TTTTransition<I, D> transition, boolean hard) {
          if (transition.isTree()) {
              return transition.getTreeTarget().dtLeaf;
          }
  
          AbstractBaseDTNode<I, D> dt = transition.getNonTreeTarget();
          dt = dtree.sift(dt, transition.getAccessSequence(), hard);
          transition.setNonTreeTarget(dt);
  
          return dt;
      }
docs: Updates the transition to point to either a leaf in the discrimination tree, or---if the {@code hard} parameter
  is set to {@code false}---to a block root.
  
  @param transition
  the transition
  @param hard
  whether to consider leaves as sufficient targets only
  
  @return the new target node of the transition