code: private int calcStackSize() {
          int i, max;
          int result;
          int[] startStack;
          ExceptionInfo e;
          int tmp;
          int unreachable;
          IntBitSet todo;
          List<Jsr> jsrs;
  
          jsrs = Jsr.findJsrs(this);
          startStack = new int[instructions.size()];
          for (i = 0; i < startStack.length; i++) {
              startStack[i] = -1;
          }
          startStack[0] = 0;
          todo = new IntBitSet();
          todo.add(0);
          max = exceptions.size();
          for (i = 0; i < max; i++) {
              e = exceptions.get(i);
              startStack[e.handler] = 1;
              todo.add(e.handler);
          }
  
          fillStack(jsrs, todo, startStack);
  
          result = 0;
          unreachable = -1;
          for (i = 0; i < startStack.length; i++) {
              tmp = startStack[i];
              if (tmp > result) {
                  result = tmp;
              }
              if ((unreachable == -1) && (tmp == -1)) {
                  unreachable = i;
              }
          }
          if (unreachable != -1) {
              // There are several class file in Sun JDK 1.3 with dead
              // code, and they pass class file validation:
              // (e.g. com.sun.corba.se.intneral.io.util.Arrays)
  
              LOGGER.warning("unreachable code, starting " + unreachable + "\n");
          }
          return result;
      }
docs: computed the stack size