code: @Override
      public void visitClassDef(JCClassDecl tree) {
          if (tree.sym.owner.kind == PCK) {
              //analyze class
              tree = analyzer.analyzeAndPreprocessClass(tree);
          }
          KlassInfo prevKlassInfo = kInfo;
          try {
              kInfo = new KlassInfo(tree);
              super.visitClassDef(tree);
              if (!kInfo.deserializeCases.isEmpty()) {
                  int prevPos = make.pos;
                  try {
                      make.at(tree);
                      kInfo.addMethod(makeDeserializeMethod(tree.sym));
                  } finally {
                      make.at(prevPos);
                  }
              }
              //add all translated instance methods here
              List<JCTree> newMethods = kInfo.appendedMethodList.toList();
              tree.defs = tree.defs.appendList(newMethods);
              for (JCTree lambda : newMethods) {
                  tree.sym.members().enter(((JCMethodDecl)lambda).sym);
              }
              result = tree;
          } finally {
              kInfo = prevKlassInfo;
          }
      }
docs: Visit a class.
  Maintain the translatedMethodList across nested classes.
  Append the translatedMethodList to the class after it is translated.
  @param tree