package org.checkerframework.framework.util;

import com.github.javaparser.ast.ArrayCreationLevel;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.ImportDeclaration;
import com.github.javaparser.ast.Modifier;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.PackageDeclaration;
import com.github.javaparser.ast.StubUnit;
import com.github.javaparser.ast.body.AnnotationDeclaration;
import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.ConstructorDeclaration;
import com.github.javaparser.ast.body.EnumConstantDeclaration;
import com.github.javaparser.ast.body.EnumDeclaration;
import com.github.javaparser.ast.body.FieldDeclaration;
import com.github.javaparser.ast.body.InitializerDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.body.Parameter;
import com.github.javaparser.ast.body.ReceiverParameter;
import com.github.javaparser.ast.body.VariableDeclarator;
import com.github.javaparser.ast.comments.BlockComment;
import com.github.javaparser.ast.comments.JavadocComment;
import com.github.javaparser.ast.comments.LineComment;
import com.github.javaparser.ast.expr.ArrayAccessExpr;
import com.github.javaparser.ast.expr.ArrayCreationExpr;
import com.github.javaparser.ast.expr.ArrayInitializerExpr;
import com.github.javaparser.ast.expr.AssignExpr;
import com.github.javaparser.ast.expr.BinaryExpr;
import com.github.javaparser.ast.expr.BooleanLiteralExpr;
import com.github.javaparser.ast.expr.CastExpr;
import com.github.javaparser.ast.expr.CharLiteralExpr;
import com.github.javaparser.ast.expr.ClassExpr;
import com.github.javaparser.ast.expr.ConditionalExpr;
import com.github.javaparser.ast.expr.DoubleLiteralExpr;
import com.github.javaparser.ast.expr.EnclosedExpr;
import com.github.javaparser.ast.expr.FieldAccessExpr;
import com.github.javaparser.ast.expr.InstanceOfExpr;
import com.github.javaparser.ast.expr.IntegerLiteralExpr;
import com.github.javaparser.ast.expr.LambdaExpr;
import com.github.javaparser.ast.expr.LongLiteralExpr;
import com.github.javaparser.ast.expr.MarkerAnnotationExpr;
import com.github.javaparser.ast.expr.MemberValuePair;
import com.github.javaparser.ast.expr.MethodCallExpr;
import com.github.javaparser.ast.expr.MethodReferenceExpr;
import com.github.javaparser.ast.expr.Name;
import com.github.javaparser.ast.expr.NameExpr;
import com.github.javaparser.ast.expr.NormalAnnotationExpr;
import com.github.javaparser.ast.expr.NullLiteralExpr;
import com.github.javaparser.ast.expr.ObjectCreationExpr;
import com.github.javaparser.ast.expr.SimpleName;
import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr;
import com.github.javaparser.ast.expr.StringLiteralExpr;
import com.github.javaparser.ast.expr.SuperExpr;
import com.github.javaparser.ast.expr.SwitchExpr;
import com.github.javaparser.ast.expr.TextBlockLiteralExpr;
import com.github.javaparser.ast.expr.ThisExpr;
import com.github.javaparser.ast.expr.TypeExpr;
import com.github.javaparser.ast.expr.UnaryExpr;
import com.github.javaparser.ast.expr.VariableDeclarationExpr;
import com.github.javaparser.ast.modules.ModuleDeclaration;
import com.github.javaparser.ast.modules.ModuleExportsDirective;
import com.github.javaparser.ast.modules.ModuleOpensDirective;
import com.github.javaparser.ast.modules.ModuleProvidesDirective;
import com.github.javaparser.ast.modules.ModuleRequiresDirective;
import com.github.javaparser.ast.modules.ModuleUsesDirective;
import com.github.javaparser.ast.stmt.AssertStmt;
import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.stmt.BreakStmt;
import com.github.javaparser.ast.stmt.CatchClause;
import com.github.javaparser.ast.stmt.ContinueStmt;
import com.github.javaparser.ast.stmt.DoStmt;
import com.github.javaparser.ast.stmt.EmptyStmt;
import com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt;
import com.github.javaparser.ast.stmt.ExpressionStmt;
import com.github.javaparser.ast.stmt.ForEachStmt;
import com.github.javaparser.ast.stmt.ForStmt;
import com.github.javaparser.ast.stmt.IfStmt;
import com.github.javaparser.ast.stmt.LabeledStmt;
import com.github.javaparser.ast.stmt.LocalClassDeclarationStmt;
import com.github.javaparser.ast.stmt.ReturnStmt;
import com.github.javaparser.ast.stmt.SwitchEntry;
import com.github.javaparser.ast.stmt.SwitchStmt;
import com.github.javaparser.ast.stmt.SynchronizedStmt;
import com.github.javaparser.ast.stmt.ThrowStmt;
import com.github.javaparser.ast.stmt.TryStmt;
import com.github.javaparser.ast.stmt.UnparsableStmt;
import com.github.javaparser.ast.stmt.WhileStmt;
import com.github.javaparser.ast.stmt.YieldStmt;
import com.github.javaparser.ast.type.ArrayType;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.ast.type.IntersectionType;
import com.github.javaparser.ast.type.PrimitiveType;
import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.ast.type.UnionType;
import com.github.javaparser.ast.type.UnknownType;
import com.github.javaparser.ast.type.VarType;
import com.github.javaparser.ast.type.VoidType;
import com.github.javaparser.ast.type.WildcardType;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;

/**
 * A visitor that visits every node in an AST by default and performs a default action on each node
 * after visiting its children.
 *
 * <p>To use this class, override {@code defaultAction}. Unlike JavaParser's {@code
 * VoidVisitorWithDefaults}, visiting a node also visits all its children. This allows easily
 * performing an action on each node of an AST.
 */
public abstract class VoidVisitorWithDefaultAction extends VoidVisitorAdapter<Void> {
  /**
   * Action performed on each visited node.
   *
   * @param node node to perform action on
   */
  public abstract void defaultAction(Node node);

  @Override
  public void visit(AnnotationDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(AnnotationMemberDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ArrayAccessExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ArrayCreationExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ArrayCreationLevel n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ArrayInitializerExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ArrayType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(AssertStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(AssignExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(BinaryExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(BlockComment n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(BlockStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(BooleanLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(BreakStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(CastExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(CatchClause n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(CharLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ClassExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ClassOrInterfaceDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ClassOrInterfaceType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(CompilationUnit n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(StubUnit n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ConditionalExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ConstructorDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ContinueStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(DoStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(DoubleLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(EmptyStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(EnclosedExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(EnumConstantDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(EnumDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ExplicitConstructorInvocationStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ExpressionStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(FieldAccessExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(FieldDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ForStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ForEachStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(IfStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ImportDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(InitializerDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(InstanceOfExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(IntegerLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(IntersectionType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(JavadocComment n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(LabeledStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(LambdaExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(LineComment n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(LocalClassDeclarationStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(LongLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(MarkerAnnotationExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(MemberValuePair n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(MethodCallExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(MethodDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(MethodReferenceExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(NameExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(Name n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(NormalAnnotationExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(NullLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ObjectCreationExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(PackageDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(Parameter n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(PrimitiveType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ReturnStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(SimpleName n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(SingleMemberAnnotationExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(StringLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(SuperExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(SwitchEntry n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(SwitchStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(SynchronizedStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ThisExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ThrowStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(TryStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(TypeExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(TypeParameter n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(UnaryExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(UnionType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(UnknownType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(VariableDeclarationExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(VariableDeclarator n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(VoidType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(WhileStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(WildcardType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ModuleDeclaration n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ModuleRequiresDirective n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ModuleExportsDirective n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ModuleProvidesDirective n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ModuleUsesDirective n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ModuleOpensDirective n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(UnparsableStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(ReceiverParameter n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(VarType n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(Modifier n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(SwitchExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(TextBlockLiteralExpr n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }

  @Override
  public void visit(YieldStmt n, Void p) {
    super.visit(n, p);
    defaultAction(n);
  }
}
