code: protected final StackTypes bcel_calc_stack_types(MethodGen mg) {
  
      StackVer stackver = new StackVer();
      VerificationResult vr;
      try {
        vr = stackver.do_stack_ver(mg);
      } catch (Throwable t) {
        System.out.printf("Warning: StackVer exception for %s.%s%n", mg.getClassName(), mg.getName());
        System.out.printf("Exception: %s%n", t);
        System.out.printf("Method is NOT instrumented%n");
        return null;
      }
      if (vr != VerificationResult.VR_OK) {
        System.out.printf(
            "Warning: StackVer failed for %s.%s: %s%n", mg.getClassName(), mg.getName(), vr);
        System.out.printf("Method is NOT instrumented%n");
        return null;
      }
      assert vr == VerificationResult.VR_OK : " vr failed " + vr;
      return stackver.get_stack_types();
    }
docs: Calculates the types on the stack for each instruction using the BCEL stack verification
  routines.
  
  @param mg MethodGen for the method to be analyzed
  @return a StackTypes object for the method