docs: private int endCheckLoop()
      {
          Node n;
          int rv = END_UNREACHED;
  
          // To find the loop body, we look at the second to last node of the
          // loop node, which should be the predicate that the loop should
          // satisfy.
          // The target of the predicate is the loop-body for all 4 kinds of
          // loops.
          for (n = first; n.next != last; n = n.next) {
              /* skip */
          }
          if (n.type != Token.IFEQ)
              return END_DROPS_OFF;
  
          // The target's next is the loop body block
          rv = ((Jump)n).target.next.endCheck();
  
          // check to see if the loop condition is true
          if (n.first.type == Token.TRUE)
              rv &= ~END_DROPS_OFF;
  
          // look for effect of breaks
          rv |= getIntProp(CONTROL_BLOCK_PROP, END_UNREACHED);
  
          return rv;
      }