package edu.kit.iti.formal.pse.worthwhile.model.ast.visitor;

import edu.kit.iti.formal.pse.worthwhile.model.ast.ASTNode;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Addition;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Annotation;
import edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayAccess;
import edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayLength;
import edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayLiteral;
import edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayType;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Assertion;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Assignment;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Assumption;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Axiom;
import edu.kit.iti.formal.pse.worthwhile.model.ast.BinaryExpression;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Block;
import edu.kit.iti.formal.pse.worthwhile.model.ast.BooleanLiteral;
import edu.kit.iti.formal.pse.worthwhile.model.ast.BooleanType;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Conditional;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Conjunction;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Disjunction;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Division;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Equal;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Equivalence;
import edu.kit.iti.formal.pse.worthwhile.model.ast.ExistsQuantifier;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Expression;
import edu.kit.iti.formal.pse.worthwhile.model.ast.ForAllQuantifier;
import edu.kit.iti.formal.pse.worthwhile.model.ast.FunctionCall;
import edu.kit.iti.formal.pse.worthwhile.model.ast.FunctionDeclaration;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Greater;
import edu.kit.iti.formal.pse.worthwhile.model.ast.GreaterOrEqual;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Implication;
import edu.kit.iti.formal.pse.worthwhile.model.ast.IntegerLiteral;
import edu.kit.iti.formal.pse.worthwhile.model.ast.IntegerType;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Invariant;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Less;
import edu.kit.iti.formal.pse.worthwhile.model.ast.LessOrEqual;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Literal;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Loop;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Minus;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Modulus;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Multiplication;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Negation;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Plus;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Postcondition;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Precondition;
import edu.kit.iti.formal.pse.worthwhile.model.ast.PrimitiveType;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Program;
import edu.kit.iti.formal.pse.worthwhile.model.ast.QuantifiedExpression;
import edu.kit.iti.formal.pse.worthwhile.model.ast.ReturnStatement;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Sign;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Statement;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Type;
import edu.kit.iti.formal.pse.worthwhile.model.ast.UnaryExpression;
import edu.kit.iti.formal.pse.worthwhile.model.ast.Unequal;
import edu.kit.iti.formal.pse.worthwhile.model.ast.VariableDeclaration;
import edu.kit.iti.formal.pse.worthwhile.model.ast.VariableReference;

/**
 * A visitor interface that can visit any ASTNode object
 * 
 * @see edu.kit.iti.formal.pse.worthwhile.model.ast.AstPackage#getASTNodeVisitor()
 */
public abstract class ASTNodeVisitor {

    private void throwUnsupportedASTNodeTypeException() {
	throw new UnsupportedOperationException("Visitor cannot Handle this type of ASTNode!");
    }

    public void visit(ASTNode node) {
	this.throwUnsupportedASTNodeTypeException();
    }
}

@@ -118,3373 +118,8 @@
 ode;
-%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Addition;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Annotation;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayAccess;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayLength;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayLiteral;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.ArrayType;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Assertion;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Assignment;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Assumption;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Axiom;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.BinaryExpression;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Block;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.BooleanLiteral;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.BooleanType;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Conditional;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Conjunction;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Disjunction;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Division;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Equal;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Equivalence;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.ExistsQuantifier;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Expression;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.ForAllQuantifier;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.FunctionCall;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.FunctionDeclaration;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Greater;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.GreaterOrEqual;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Implication;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.IntegerLiteral;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.IntegerType;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Invariant;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Less;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.LessOrEqual;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Literal;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Loop;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Minus;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Modulus;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Multiplication;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Negation;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Plus;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Postcondition;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Precondition;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.PrimitiveType;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Program;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.QuantifiedExpression;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.ReturnStatement;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Sign;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Statement;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Type;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.UnaryExpression;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.Unequal;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.VariableDeclaration;%0Aimport edu.kit.iti.formal.pse.worthwhile.model.ast.VariableReference;
 %0A%0A/*

Remove unnecessary imports in ASTNodeVisitor