code: void calcFollowPos(RBBINode n) {
             if (n == null ||
                 n.fType == RBBINode.leafChar ||
                 n.fType == RBBINode.endMark) {
                 return;
             }
  
             calcFollowPos(n.fLeftChild);
             calcFollowPos(n.fRightChild);
  
             // Aho rule #1
             if (n.fType == RBBINode.opCat) {
                 for (RBBINode i /* is 'i' in Aho's description */ : n.fLeftChild.fLastPosSet) {
                     i.fFollowPos.addAll(n.fRightChild.fFirstPosSet);
                 }
             }
  
             // Aho rule #2
             if (n.fType == RBBINode.opStar ||
                 n.fType == RBBINode.opPlus) {
                 for (RBBINode i /* again, n and i are the names from Aho's description */ : n.fLastPosSet) {
                     i.fFollowPos.addAll(n.fFirstPosSet);
                 }
             }
         }
docs: -----------------------------------------------------------------------------