docs: private void generateResumeGenerator(ClassFileWriter cfw)
      {
          boolean hasGenerators = false;
          for (int i=0; i < scriptOrFnNodes.length; i++) {
              if (isGenerator(scriptOrFnNodes[i]))
                  hasGenerators = true;
          }
  
          // if there are no generators defined, we don't implement a
          // resumeGenerator(). The base class provides a default implementation.
          if (!hasGenerators)
              return;
  
          cfw.startMethod("resumeGenerator",
                          "(Lorg/mozilla/javascript/Context;" +
                          "Lorg/mozilla/javascript/Scriptable;" +
                          "ILjava/lang/Object;" +
                          "Ljava/lang/Object;)Ljava/lang/Object;",
                          (short)(ACC_PUBLIC | ACC_FINAL));
  
          // load arguments for dispatch to the corresponding *_gen method
          cfw.addALoad(0);
          cfw.addALoad(1);
          cfw.addALoad(2);
          cfw.addALoad(4);
          cfw.addALoad(5);
          cfw.addILoad(3);
  
          cfw.addLoadThis();
          cfw.add(ByteCode.GETFIELD, cfw.getClassName(), ID_FIELD_NAME, "I");
  
          int startSwitch = cfw.addTableSwitch(0, scriptOrFnNodes.length - 1);
          cfw.markTableSwitchDefault(startSwitch);
          int endlabel = cfw.acquireLabel();
  
          for (int i = 0; i < scriptOrFnNodes.length; i++) {
              ScriptNode n = scriptOrFnNodes[i];
              cfw.markTableSwitchCase(startSwitch, i, (short)6);
              if (isGenerator(n)) {
                  String type = "(" +
                                mainClassSignature +
                                "Lorg/mozilla/javascript/Context;" +
                                "Lorg/mozilla/javascript/Scriptable;" +
                                "Ljava/lang/Object;" +
                                "Ljava/lang/Object;I)Ljava/lang/Object;";
                  cfw.addInvoke(ByteCode.INVOKESTATIC,
                                mainClassName,
                                getBodyMethodName(n) + "_gen",
                                type);
                  cfw.add(ByteCode.ARETURN);
              } else {
                  cfw.add(ByteCode.GOTO, endlabel);
              }
          }
  
          cfw.markLabel(endlabel);
          pushUndefined(cfw);
          cfw.add(ByteCode.ARETURN);
  
  
          // this method uses as many locals as there are arguments (hence 6)
          cfw.stopMethod((short)6);
      }