code: private void createMDAGNode(SimpleMDAGNode current, int fromIndex, MDAGNode[] toNodeArray, MDAGNode[] fromNodeArray)
      {
          MDAGNode from = (fromIndex == -1 ? sourceNode : toNodeArray[fromIndex]);
          int transitionSetBegin = current.getTransitionSetBeginIndex();
          int onePastTransitionSetEnd = transitionSetBegin + current.getOutgoingTransitionSetSize();
  
          for (int i = transitionSetBegin; i < onePastTransitionSetEnd; i++)
          {
              SimpleMDAGNode targetNode = mdagDataArray[i];
              if (toNodeArray[i] != null)
              {
                  fromNodeArray[fromIndex].addOutgoingTransition(current.getLetter(), fromNodeArray[i]);
                  toNodeArray[fromIndex] = fromNodeArray[i];
                  continue;
              }
              toNodeArray[i] = from.addOutgoingTransition(targetNode.getLetter(), targetNode.isAcceptNode());
              fromNodeArray[i] = from;
              createMDAGNode(targetNode, i, toNodeArray, fromNodeArray);
          }
      }
docs: 递归创建节点<br>
  @param current 当前简易节点
  @param fromIndex 起点下标
  @param toNodeArray 终点数组
  @param fromNodeArray 起点数组，它们两个按照下标一一对应