code: private void markSubroutines() {
          BitSet anyvisited = new BitSet();
  
          // First walk the main subroutine and find all those instructions which
          // can be reached without invoking any JSR at all
          markSubroutineWalk(mainSubroutine, 0, anyvisited);
  
          // Go through the head of each subroutine and find any nodes reachable
          // to that subroutine without following any JSR links.
          for (Iterator<Map.Entry<LabelNode, BitSet>> it = subroutineHeads
                  .entrySet().iterator(); it.hasNext();) {
              Map.Entry<LabelNode, BitSet> entry = it.next();
              LabelNode lab = entry.getKey();
              BitSet sub = entry.getValue();
              int index = instructions.indexOf(lab);
              markSubroutineWalk(sub, index, anyvisited);
          }
      }
docs: Walks the method and determines which internal subroutine(s), if any,
  each instruction is a method of.