private Iterator<IFATransition> tryGetNextMatchedState(
        N child,
        IFAState sourceState,
        IStateMatchInfo currentStateMatchInfo,
        boolean needFinalState) {
      Map<String, IFATransition> preciseMatchTransitionMap =
          patternFA.getPreciseMatchTransition(sourceState);

      IFAState matchedState;
      if (!preciseMatchTransitionMap.isEmpty()) {
        matchedState = tryGetNextState(child, sourceState, preciseMatchTransitionMap);
        if (matchedState != null) {
          currentStateMatchInfo.addMatchedState(matchedState);
          if (!needFinalState || matchedState.isFinal()) {
            return patternFA.getFuzzyMatchTransitionIterator(sourceState);
          }
        }
      }

      Iterator<IFATransition> transitionIterator =
          patternFA.getFuzzyMatchTransitionIterator(sourceState);
      while (transitionIterator.hasNext()) {
        matchedState = tryGetNextState(child, sourceState, transitionIterator.next());
        if (matchedState != null) {
          currentStateMatchInfo.addMatchedState(matchedState);
          if (!needFinalState || matchedState.isFinal()) {
            return transitionIterator;
          }
        }
      }
      return transitionIterator;
    }
Try to get next matched state from sourceState and add it into currentStateMatchInfo

@param child child node to match
@param sourceState source state
@param currentStateMatchInfo currentStateMatchInfo
@return iterator of rest transitions
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/tree/AbstractTreeVisitor.java