code: @Override
      public void visitClassContext(ClassContext classContext) {
          try {
              if ((collectionClass != null) && (mapClass != null)) {
                  collectionFields = new HashMap<>();
                  aliases = new HashMap<>();
                  stack = new OpcodeStack();
                  JavaClass cls = classContext.getJavaClass();
                  className = cls.getClassName();
                  super.visitClassContext(classContext);
                  for (FieldInfo fi : collectionFields.values()) {
                      if (fi.isSynchronized()) {
                          bugReporter.reportBug(new BugInstance(this, BugType.NMCS_NEEDLESS_MEMBER_COLLECTION_SYNCHRONIZATION.name(), NORMAL_PRIORITY)
                                  .addClass(this).addField(fi.getFieldAnnotation()));
                      }
                  }
              }
          } finally {
              collectionFields = null;
              aliases = null;
              stack = null;
          }
      }
docs: implements the visitor to clear the collectionFields and stack and to report collections that remain unmodified out of clinit or init
  
  @param classContext
  the context object of the currently parsed class