@Override
  public void visit(Tree.ClassBody that) {
    if (that.getScope() == declaration.getContainer()) {
      Tree.Statement les = getLastExecutableStatement(that);
      Tree.Declaration lc = getLastConstructor(that);
      declarationSection = les == null;
      lastExecutableStatement = les;
      lastConstructor = lc;
      super.visit(that);
      declarationSection = false;
      lastExecutableStatement = null;
      lastConstructor = null;

      if (!declaration.isAnonymous()) {
        if (isSharedDeclarationUninitialized()) {
          getDeclaration(that)
              .addError(
                  "must be definitely specified by class initializer: "
                      + message(declaration)
                      + " is shared",
                  1401);
        }
      }
    } else {
      super.visit(that);
    }
  }