/******************************************************************************* * Copyright (c) 2009-2015 CWI * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * Jurgen J. Vinju - Jurgen.Vinju@cwi.nl - CWI * * Tijs van der Storm - Tijs.van.der.Storm@cwi.nl * * Paul Klint - Paul.Klint@cwi.nl - CWI * * Mark Hills - Mark.Hills@cwi.nl (CWI) * * Arnold Lankamp - Arnold.Lankamp@cwi.nl * * Michael Steindorfer - Michael.Steindorfer@cwi.nl - CWI *******************************************************************************/ package org.rascalmpl.ast; import org.rascalmpl.value.IConstructor; import org.rascalmpl.value.ISourceLocation; public abstract class Expression extends AbstractAST { public Expression(ISourceLocation src, IConstructor node) { super(src /* we forget node on purpose */); } public boolean hasArguments() { return false; } public java.util.List<org.rascalmpl.ast.Expression> getArguments() { throw new UnsupportedOperationException(); } public boolean hasElements() { return false; } public java.util.List<org.rascalmpl.ast.Expression> getElements() { throw new UnsupportedOperationException(); } public boolean hasElements0() { return false; } public java.util.List<org.rascalmpl.ast.Expression> getElements0() { throw new UnsupportedOperationException(); } public boolean hasGenerators() { return false; } public java.util.List<org.rascalmpl.ast.Expression> getGenerators() { throw new UnsupportedOperationException(); } public boolean hasSubscripts() { return false; } public java.util.List<org.rascalmpl.ast.Expression> getSubscripts() { throw new UnsupportedOperationException(); } public boolean hasFields() { return false; } public java.util.List<org.rascalmpl.ast.Field> getFields() { throw new UnsupportedOperationException(); } public boolean hasMappings() { return false; } public java.util.List<org.rascalmpl.ast.Mapping_Expression> getMappings() { throw new UnsupportedOperationException(); } public boolean hasStatements() { return false; } public java.util.List<org.rascalmpl.ast.Statement> getStatements() { throw new UnsupportedOperationException(); } public boolean hasStatements0() { return false; } public java.util.List<org.rascalmpl.ast.Statement> getStatements0() { throw new UnsupportedOperationException(); } public boolean hasComprehension() { return false; } public org.rascalmpl.ast.Comprehension getComprehension() { throw new UnsupportedOperationException(); } public boolean hasConcrete() { return false; } public org.rascalmpl.ast.Concrete getConcrete() { throw new UnsupportedOperationException(); } public boolean hasArgument() { return false; } public org.rascalmpl.ast.Expression getArgument() { throw new UnsupportedOperationException(); } public boolean hasCondition() { return false; } public org.rascalmpl.ast.Expression getCondition() { throw new UnsupportedOperationException(); } public boolean hasDefinitions() { return false; } public org.rascalmpl.ast.Expression getDefinitions() { throw new UnsupportedOperationException(); } public boolean hasElseExp() { return false; } public org.rascalmpl.ast.Expression getElseExp() { throw new UnsupportedOperationException(); } public boolean hasExpression() { return false; } public org.rascalmpl.ast.Expression getExpression() { throw new UnsupportedOperationException(); } public boolean hasFirst() { return false; } public org.rascalmpl.ast.Expression getFirst() { throw new UnsupportedOperationException(); } public boolean hasInit() { return false; } public org.rascalmpl.ast.Expression getInit() { throw new UnsupportedOperationException(); } public boolean hasLast() { return false; } public org.rascalmpl.ast.Expression getLast() { throw new UnsupportedOperationException(); } public boolean hasLhs() { return false; } public org.rascalmpl.ast.Expression getLhs() { throw new UnsupportedOperationException(); } public boolean hasPattern() { return false; } public org.rascalmpl.ast.Expression getPattern() { throw new UnsupportedOperationException(); } public boolean hasReplacement() { return false; } public org.rascalmpl.ast.Expression getReplacement() { throw new UnsupportedOperationException(); } public boolean hasResult() { return false; } public org.rascalmpl.ast.Expression getResult() { throw new UnsupportedOperationException(); } public boolean hasRhs() { return false; } public org.rascalmpl.ast.Expression getRhs() { throw new UnsupportedOperationException(); } public boolean hasSecond() { return false; } public org.rascalmpl.ast.Expression getSecond() { throw new UnsupportedOperationException(); } public boolean hasSymbol() { return false; } public org.rascalmpl.ast.Expression getSymbol() { throw new UnsupportedOperationException(); } public boolean hasThenExp() { return false; } public org.rascalmpl.ast.Expression getThenExp() { throw new UnsupportedOperationException(); } public boolean hasValue() { return false; } public org.rascalmpl.ast.Expression getValue() { throw new UnsupportedOperationException(); } public boolean hasKeywordArguments() { return false; } public org.rascalmpl.ast.KeywordArguments_Expression getKeywordArguments() { throw new UnsupportedOperationException(); } public boolean hasLabel() { return false; } public org.rascalmpl.ast.Label getLabel() { throw new UnsupportedOperationException(); } public boolean hasLiteral() { return false; } public org.rascalmpl.ast.Literal getLiteral() { throw new UnsupportedOperationException(); } public boolean hasField() { return false; } public org.rascalmpl.ast.Name getField() { throw new UnsupportedOperationException(); } public boolean hasKey() { return false; } public org.rascalmpl.ast.Name getKey() { throw new UnsupportedOperationException(); } public boolean hasName() { return false; } public org.rascalmpl.ast.Name getName() { throw new UnsupportedOperationException(); } public boolean hasOptFirst() { return false; } public org.rascalmpl.ast.OptionalExpression getOptFirst() { throw new UnsupportedOperationException(); } public boolean hasOptLast() { return false; } public org.rascalmpl.ast.OptionalExpression getOptLast() { throw new UnsupportedOperationException(); } public boolean hasParameters() { return false; } public org.rascalmpl.ast.Parameters getParameters() { throw new UnsupportedOperationException(); } public boolean hasQualifiedName() { return false; } public org.rascalmpl.ast.QualifiedName getQualifiedName() { throw new UnsupportedOperationException(); } public boolean hasType() { return false; } public org.rascalmpl.ast.Type getType() { throw new UnsupportedOperationException(); } public boolean hasVisit() { return false; } public org.rascalmpl.ast.Visit getVisit() { throw new UnsupportedOperationException(); } public boolean isAddition() { return false; } static public class Addition extends Expression { // Production: sig("Addition",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Addition(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isAddition() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionAddition(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Addition)) { return false; } Addition tmp = (Addition) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 271 + 41 * lhs.hashCode() + 919 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isAll() { return false; } static public class All extends Expression { // Production: sig("All",[arg("java.util.List\<org.rascalmpl.ast.Expression\>","generators")],breakable=false) private final java.util.List<org.rascalmpl.ast.Expression> generators; public All(ISourceLocation src, IConstructor node , java.util.List<org.rascalmpl.ast.Expression> generators) { super(src, node); this.generators = generators; } @Override public boolean isAll() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionAll(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; for (AbstractAST $elem : generators) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof All)) { return false; } All tmp = (All) o; return true && tmp.generators.equals(this.generators) ; } @Override public int hashCode() { return 673 + 499 * generators.hashCode() ; } @Override public java.util.List<org.rascalmpl.ast.Expression> getGenerators() { return this.generators; } @Override public boolean hasGenerators() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(generators)); } } public boolean isAnd() { return false; } static public class And extends Expression { // Production: sig("And",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public And(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isAnd() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionAnd(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof And)) { return false; } And tmp = (And) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 937 + 443 * lhs.hashCode() + 523 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isAnti() { return false; } static public class Anti extends Expression { // Production: sig("Anti",[arg("org.rascalmpl.ast.Expression","pattern")],breakable=false) private final org.rascalmpl.ast.Expression pattern; public Anti(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression pattern) { super(src, node); this.pattern = pattern; } @Override public boolean isAnti() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionAnti(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = pattern.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { pattern.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Anti)) { return false; } Anti tmp = (Anti) o; return true && tmp.pattern.equals(this.pattern) ; } @Override public int hashCode() { return 881 + 401 * pattern.hashCode() ; } @Override public org.rascalmpl.ast.Expression getPattern() { return this.pattern; } @Override public boolean hasPattern() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(pattern)); } } public boolean isAny() { return false; } static public class Any extends Expression { // Production: sig("Any",[arg("java.util.List\<org.rascalmpl.ast.Expression\>","generators")],breakable=false) private final java.util.List<org.rascalmpl.ast.Expression> generators; public Any(ISourceLocation src, IConstructor node , java.util.List<org.rascalmpl.ast.Expression> generators) { super(src, node); this.generators = generators; } @Override public boolean isAny() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionAny(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; for (AbstractAST $elem : generators) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Any)) { return false; } Any tmp = (Any) o; return true && tmp.generators.equals(this.generators) ; } @Override public int hashCode() { return 953 + 2 * generators.hashCode() ; } @Override public java.util.List<org.rascalmpl.ast.Expression> getGenerators() { return this.generators; } @Override public boolean hasGenerators() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(generators)); } } public boolean isAppendAfter() { return false; } static public class AppendAfter extends Expression { // Production: sig("AppendAfter",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public AppendAfter(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isAppendAfter() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionAppendAfter(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof AppendAfter)) { return false; } AppendAfter tmp = (AppendAfter) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 271 + 599 * lhs.hashCode() + 383 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isAsType() { return false; } static public class AsType extends Expression { // Production: sig("AsType",[arg("org.rascalmpl.ast.Type","type"),arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Type type; private final org.rascalmpl.ast.Expression argument; public AsType(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type type, org.rascalmpl.ast.Expression argument) { super(src, node); this.type = type; this.argument = argument; } @Override public boolean isAsType() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionAsType(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = type.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { type.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof AsType)) { return false; } AsType tmp = (AsType) o; return true && tmp.type.equals(this.type) && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 167 + 199 * type.hashCode() + 103 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Type getType() { return this.type; } @Override public boolean hasType() { return true; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(type), clone(argument)); } } public boolean isBracket() { return false; } static public class Bracket extends Expression { // Production: sig("Bracket",[arg("org.rascalmpl.ast.Expression","expression")],breakable=false) private final org.rascalmpl.ast.Expression expression; public Bracket(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression) { super(src, node); this.expression = expression; } @Override public boolean isBracket() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionBracket(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Bracket)) { return false; } Bracket tmp = (Bracket) o; return true && tmp.expression.equals(this.expression) ; } @Override public int hashCode() { return 149 + 709 * expression.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression)); } } public boolean isCallOrTree() { return false; } static public class CallOrTree extends Expression { // Production: sig("CallOrTree",[arg("org.rascalmpl.ast.Expression","expression"),arg("java.util.List\<org.rascalmpl.ast.Expression\>","arguments"),arg("org.rascalmpl.ast.KeywordArguments_Expression","keywordArguments")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final java.util.List<org.rascalmpl.ast.Expression> arguments; private final org.rascalmpl.ast.KeywordArguments_Expression keywordArguments; public CallOrTree(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, java.util.List<org.rascalmpl.ast.Expression> arguments, org.rascalmpl.ast.KeywordArguments_Expression keywordArguments) { super(src, node); this.expression = expression; this.arguments = arguments; this.keywordArguments = keywordArguments; } @Override public boolean isCallOrTree() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionCallOrTree(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : arguments) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } $l = keywordArguments.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { keywordArguments.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof CallOrTree)) { return false; } CallOrTree tmp = (CallOrTree) o; return true && tmp.expression.equals(this.expression) && tmp.arguments.equals(this.arguments) && tmp.keywordArguments.equals(this.keywordArguments) ; } @Override public int hashCode() { return 151 + 13 * expression.hashCode() + 997 * arguments.hashCode() + 373 * keywordArguments.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public java.util.List<org.rascalmpl.ast.Expression> getArguments() { return this.arguments; } @Override public boolean hasArguments() { return true; } @Override public org.rascalmpl.ast.KeywordArguments_Expression getKeywordArguments() { return this.keywordArguments; } @Override public boolean hasKeywordArguments() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(arguments), clone(keywordArguments)); } } public boolean isClosure() { return false; } static public class Closure extends Expression { // Production: sig("Closure",[arg("org.rascalmpl.ast.Type","type"),arg("org.rascalmpl.ast.Parameters","parameters"),arg("java.util.List\<org.rascalmpl.ast.Statement\>","statements")],breakable=false) private final org.rascalmpl.ast.Type type; private final org.rascalmpl.ast.Parameters parameters; private final java.util.List<org.rascalmpl.ast.Statement> statements; public Closure(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type type, org.rascalmpl.ast.Parameters parameters, java.util.List<org.rascalmpl.ast.Statement> statements) { super(src, node); this.type = type; this.parameters = parameters; this.statements = statements; } @Override public boolean isClosure() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionClosure(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = type.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { type.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = parameters.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { parameters.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : statements) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Closure)) { return false; } Closure tmp = (Closure) o; return true && tmp.type.equals(this.type) && tmp.parameters.equals(this.parameters) && tmp.statements.equals(this.statements) ; } @Override public int hashCode() { return 257 + 271 * type.hashCode() + 811 * parameters.hashCode() + 67 * statements.hashCode() ; } @Override public org.rascalmpl.ast.Type getType() { return this.type; } @Override public boolean hasType() { return true; } @Override public org.rascalmpl.ast.Parameters getParameters() { return this.parameters; } @Override public boolean hasParameters() { return true; } @Override public java.util.List<org.rascalmpl.ast.Statement> getStatements() { return this.statements; } @Override public boolean hasStatements() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(type), clone(parameters), clone(statements)); } } public boolean isComposition() { return false; } static public class Composition extends Expression { // Production: sig("Composition",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Composition(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isComposition() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionComposition(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Composition)) { return false; } Composition tmp = (Composition) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 643 + 251 * lhs.hashCode() + 521 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isComprehension() { return false; } static public class Comprehension extends Expression { // Production: sig("Comprehension",[arg("org.rascalmpl.ast.Comprehension","comprehension")],breakable=false) private final org.rascalmpl.ast.Comprehension comprehension; public Comprehension(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Comprehension comprehension) { super(src, node); this.comprehension = comprehension; } @Override public boolean isComprehension() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionComprehension(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = comprehension.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { comprehension.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Comprehension)) { return false; } Comprehension tmp = (Comprehension) o; return true && tmp.comprehension.equals(this.comprehension) ; } @Override public int hashCode() { return 797 + 131 * comprehension.hashCode() ; } @Override public org.rascalmpl.ast.Comprehension getComprehension() { return this.comprehension; } @Override public boolean hasComprehension() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(comprehension)); } } public boolean isConcrete() { return false; } static public class Concrete extends Expression { // Production: sig("Concrete",[arg("org.rascalmpl.ast.Concrete","concrete")],breakable=false) private final org.rascalmpl.ast.Concrete concrete; public Concrete(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Concrete concrete) { super(src, node); this.concrete = concrete; } @Override public boolean isConcrete() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionConcrete(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = concrete.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { concrete.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Concrete)) { return false; } Concrete tmp = (Concrete) o; return true && tmp.concrete.equals(this.concrete) ; } @Override public int hashCode() { return 499 + 73 * concrete.hashCode() ; } @Override public org.rascalmpl.ast.Concrete getConcrete() { return this.concrete; } @Override public boolean hasConcrete() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(concrete)); } } public boolean isDescendant() { return false; } static public class Descendant extends Expression { // Production: sig("Descendant",[arg("org.rascalmpl.ast.Expression","pattern")],breakable=false) private final org.rascalmpl.ast.Expression pattern; public Descendant(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression pattern) { super(src, node); this.pattern = pattern; } @Override public boolean isDescendant() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionDescendant(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = pattern.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { pattern.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Descendant)) { return false; } Descendant tmp = (Descendant) o; return true && tmp.pattern.equals(this.pattern) ; } @Override public int hashCode() { return 877 + 757 * pattern.hashCode() ; } @Override public org.rascalmpl.ast.Expression getPattern() { return this.pattern; } @Override public boolean hasPattern() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(pattern)); } } public boolean isDivision() { return false; } static public class Division extends Expression { // Production: sig("Division",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Division(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isDivision() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionDivision(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Division)) { return false; } Division tmp = (Division) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 269 + 241 * lhs.hashCode() + 353 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isEnumerator() { return false; } static public class Enumerator extends Expression { // Production: sig("Enumerator",[arg("org.rascalmpl.ast.Expression","pattern"),arg("org.rascalmpl.ast.Expression","expression")],breakable=false) private final org.rascalmpl.ast.Expression pattern; private final org.rascalmpl.ast.Expression expression; public Enumerator(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression pattern, org.rascalmpl.ast.Expression expression) { super(src, node); this.pattern = pattern; this.expression = expression; } @Override public boolean isEnumerator() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionEnumerator(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = pattern.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { pattern.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Enumerator)) { return false; } Enumerator tmp = (Enumerator) o; return true && tmp.pattern.equals(this.pattern) && tmp.expression.equals(this.expression) ; } @Override public int hashCode() { return 229 + 659 * pattern.hashCode() + 743 * expression.hashCode() ; } @Override public org.rascalmpl.ast.Expression getPattern() { return this.pattern; } @Override public boolean hasPattern() { return true; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(pattern), clone(expression)); } } public boolean isEquals() { return false; } static public class Equals extends Expression { // Production: sig("Equals",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Equals(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isEquals() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionEquals(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Equals)) { return false; } Equals tmp = (Equals) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 223 + 193 * lhs.hashCode() + 743 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isEquivalence() { return false; } static public class Equivalence extends Expression { // Production: sig("Equivalence",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Equivalence(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isEquivalence() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionEquivalence(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Equivalence)) { return false; } Equivalence tmp = (Equivalence) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 863 + 263 * lhs.hashCode() + 151 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isFieldAccess() { return false; } static public class FieldAccess extends Expression { // Production: sig("FieldAccess",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.Name","field")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.Name field; public FieldAccess(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.Name field) { super(src, node); this.expression = expression; this.field = field; } @Override public boolean isFieldAccess() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionFieldAccess(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = field.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { field.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof FieldAccess)) { return false; } FieldAccess tmp = (FieldAccess) o; return true && tmp.expression.equals(this.expression) && tmp.field.equals(this.field) ; } @Override public int hashCode() { return 421 + 619 * expression.hashCode() + 179 * field.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.Name getField() { return this.field; } @Override public boolean hasField() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(field)); } } public boolean isFieldProject() { return false; } static public class FieldProject extends Expression { // Production: sig("FieldProject",[arg("org.rascalmpl.ast.Expression","expression"),arg("java.util.List\<org.rascalmpl.ast.Field\>","fields")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final java.util.List<org.rascalmpl.ast.Field> fields; public FieldProject(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, java.util.List<org.rascalmpl.ast.Field> fields) { super(src, node); this.expression = expression; this.fields = fields; } @Override public boolean isFieldProject() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionFieldProject(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : fields) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof FieldProject)) { return false; } FieldProject tmp = (FieldProject) o; return true && tmp.expression.equals(this.expression) && tmp.fields.equals(this.fields) ; } @Override public int hashCode() { return 757 + 991 * expression.hashCode() + 71 * fields.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public java.util.List<org.rascalmpl.ast.Field> getFields() { return this.fields; } @Override public boolean hasFields() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(fields)); } } public boolean isFieldUpdate() { return false; } static public class FieldUpdate extends Expression { // Production: sig("FieldUpdate",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.Name","key"),arg("org.rascalmpl.ast.Expression","replacement")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.Name key; private final org.rascalmpl.ast.Expression replacement; public FieldUpdate(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.Name key, org.rascalmpl.ast.Expression replacement) { super(src, node); this.expression = expression; this.key = key; this.replacement = replacement; } @Override public boolean isFieldUpdate() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionFieldUpdate(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = key.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { key.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = replacement.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { replacement.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof FieldUpdate)) { return false; } FieldUpdate tmp = (FieldUpdate) o; return true && tmp.expression.equals(this.expression) && tmp.key.equals(this.key) && tmp.replacement.equals(this.replacement) ; } @Override public int hashCode() { return 199 + 3 * expression.hashCode() + 991 * key.hashCode() + 541 * replacement.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.Name getKey() { return this.key; } @Override public boolean hasKey() { return true; } @Override public org.rascalmpl.ast.Expression getReplacement() { return this.replacement; } @Override public boolean hasReplacement() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(key), clone(replacement)); } } public boolean isGetAnnotation() { return false; } static public class GetAnnotation extends Expression { // Production: sig("GetAnnotation",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.Name","name")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.Name name; public GetAnnotation(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.Name name) { super(src, node); this.expression = expression; this.name = name; } @Override public boolean isGetAnnotation() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionGetAnnotation(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = name.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { name.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof GetAnnotation)) { return false; } GetAnnotation tmp = (GetAnnotation) o; return true && tmp.expression.equals(this.expression) && tmp.name.equals(this.name) ; } @Override public int hashCode() { return 467 + 7 * expression.hashCode() + 809 * name.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.Name getName() { return this.name; } @Override public boolean hasName() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(name)); } } public boolean isGreaterThan() { return false; } static public class GreaterThan extends Expression { // Production: sig("GreaterThan",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public GreaterThan(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isGreaterThan() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionGreaterThan(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof GreaterThan)) { return false; } GreaterThan tmp = (GreaterThan) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 401 + 953 * lhs.hashCode() + 967 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isGreaterThanOrEq() { return false; } static public class GreaterThanOrEq extends Expression { // Production: sig("GreaterThanOrEq",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public GreaterThanOrEq(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isGreaterThanOrEq() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionGreaterThanOrEq(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof GreaterThanOrEq)) { return false; } GreaterThanOrEq tmp = (GreaterThanOrEq) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 797 + 709 * lhs.hashCode() + 223 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isHas() { return false; } static public class Has extends Expression { // Production: sig("Has",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.Name","name")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.Name name; public Has(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.Name name) { super(src, node); this.expression = expression; this.name = name; } @Override public boolean isHas() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionHas(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = name.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { name.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Has)) { return false; } Has tmp = (Has) o; return true && tmp.expression.equals(this.expression) && tmp.name.equals(this.name) ; } @Override public int hashCode() { return 499 + 227 * expression.hashCode() + 577 * name.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.Name getName() { return this.name; } @Override public boolean hasName() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(name)); } } public boolean isIfDefinedOtherwise() { return false; } static public class IfDefinedOtherwise extends Expression { // Production: sig("IfDefinedOtherwise",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public IfDefinedOtherwise(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isIfDefinedOtherwise() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionIfDefinedOtherwise(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof IfDefinedOtherwise)) { return false; } IfDefinedOtherwise tmp = (IfDefinedOtherwise) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 163 + 151 * lhs.hashCode() + 467 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isIfThenElse() { return false; } static public class IfThenElse extends Expression { // Production: sig("IfThenElse",[arg("org.rascalmpl.ast.Expression","condition"),arg("org.rascalmpl.ast.Expression","thenExp"),arg("org.rascalmpl.ast.Expression","elseExp")],breakable=false) private final org.rascalmpl.ast.Expression condition; private final org.rascalmpl.ast.Expression thenExp; private final org.rascalmpl.ast.Expression elseExp; public IfThenElse(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression condition, org.rascalmpl.ast.Expression thenExp, org.rascalmpl.ast.Expression elseExp) { super(src, node); this.condition = condition; this.thenExp = thenExp; this.elseExp = elseExp; } @Override public boolean isIfThenElse() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionIfThenElse(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = condition.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { condition.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = thenExp.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { thenExp.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = elseExp.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { elseExp.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof IfThenElse)) { return false; } IfThenElse tmp = (IfThenElse) o; return true && tmp.condition.equals(this.condition) && tmp.thenExp.equals(this.thenExp) && tmp.elseExp.equals(this.elseExp) ; } @Override public int hashCode() { return 641 + 887 * condition.hashCode() + 491 * thenExp.hashCode() + 619 * elseExp.hashCode() ; } @Override public org.rascalmpl.ast.Expression getCondition() { return this.condition; } @Override public boolean hasCondition() { return true; } @Override public org.rascalmpl.ast.Expression getThenExp() { return this.thenExp; } @Override public boolean hasThenExp() { return true; } @Override public org.rascalmpl.ast.Expression getElseExp() { return this.elseExp; } @Override public boolean hasElseExp() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(condition), clone(thenExp), clone(elseExp)); } } public boolean isImplication() { return false; } static public class Implication extends Expression { // Production: sig("Implication",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Implication(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isImplication() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionImplication(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Implication)) { return false; } Implication tmp = (Implication) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 421 + 79 * lhs.hashCode() + 173 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isIn() { return false; } static public class In extends Expression { // Production: sig("In",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public In(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isIn() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionIn(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof In)) { return false; } In tmp = (In) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 911 + 239 * lhs.hashCode() + 613 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isInsertBefore() { return false; } static public class InsertBefore extends Expression { // Production: sig("InsertBefore",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public InsertBefore(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isInsertBefore() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionInsertBefore(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof InsertBefore)) { return false; } InsertBefore tmp = (InsertBefore) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 71 + 167 * lhs.hashCode() + 491 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isIntersection() { return false; } static public class Intersection extends Expression { // Production: sig("Intersection",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Intersection(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isIntersection() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionIntersection(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Intersection)) { return false; } Intersection tmp = (Intersection) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 509 + 179 * lhs.hashCode() + 773 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isIs() { return false; } static public class Is extends Expression { // Production: sig("Is",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.Name","name")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.Name name; public Is(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.Name name) { super(src, node); this.expression = expression; this.name = name; } @Override public boolean isIs() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionIs(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = name.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { name.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Is)) { return false; } Is tmp = (Is) o; return true && tmp.expression.equals(this.expression) && tmp.name.equals(this.name) ; } @Override public int hashCode() { return 337 + 181 * expression.hashCode() + 911 * name.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.Name getName() { return this.name; } @Override public boolean hasName() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(name)); } } public boolean isIsDefined() { return false; } static public class IsDefined extends Expression { // Production: sig("IsDefined",[arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Expression argument; public IsDefined(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression argument) { super(src, node); this.argument = argument; } @Override public boolean isIsDefined() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionIsDefined(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof IsDefined)) { return false; } IsDefined tmp = (IsDefined) o; return true && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 239 + 401 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(argument)); } } public boolean isIt() { return false; } static public class It extends Expression { // Production: sig("It",[],breakable=false) public It(ISourceLocation src, IConstructor node ) { super(src, node); } @Override public boolean isIt() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionIt(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; } @Override public boolean equals(Object o) { if (!(o instanceof It)) { return false; } It tmp = (It) o; return true ; } @Override public int hashCode() { return 607 ; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null ); } } public boolean isJoin() { return false; } static public class Join extends Expression { // Production: sig("Join",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Join(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isJoin() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionJoin(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Join)) { return false; } Join tmp = (Join) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 599 + 283 * lhs.hashCode() + 881 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isLessThan() { return false; } static public class LessThan extends Expression { // Production: sig("LessThan",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public LessThan(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isLessThan() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionLessThan(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof LessThan)) { return false; } LessThan tmp = (LessThan) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 449 + 457 * lhs.hashCode() + 967 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isLessThanOrEq() { return false; } static public class LessThanOrEq extends Expression { // Production: sig("LessThanOrEq",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public LessThanOrEq(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isLessThanOrEq() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionLessThanOrEq(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof LessThanOrEq)) { return false; } LessThanOrEq tmp = (LessThanOrEq) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 991 + 683 * lhs.hashCode() + 31 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isList() { return false; } static public class List extends Expression { // Production: sig("List",[arg("java.util.List\<org.rascalmpl.ast.Expression\>","elements0")],breakable=false) private final java.util.List<org.rascalmpl.ast.Expression> elements0; public List(ISourceLocation src, IConstructor node , java.util.List<org.rascalmpl.ast.Expression> elements0) { super(src, node); this.elements0 = elements0; } @Override public boolean isList() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionList(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; for (AbstractAST $elem : elements0) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof List)) { return false; } List tmp = (List) o; return true && tmp.elements0.equals(this.elements0) ; } @Override public int hashCode() { return 71 + 223 * elements0.hashCode() ; } @Override public java.util.List<org.rascalmpl.ast.Expression> getElements0() { return this.elements0; } @Override public boolean hasElements0() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(elements0)); } } public boolean isLiteral() { return false; } static public class Literal extends Expression { // Production: sig("Literal",[arg("org.rascalmpl.ast.Literal","literal")],breakable=false) private final org.rascalmpl.ast.Literal literal; public Literal(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Literal literal) { super(src, node); this.literal = literal; } @Override public boolean isLiteral() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionLiteral(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = literal.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { literal.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Literal)) { return false; } Literal tmp = (Literal) o; return true && tmp.literal.equals(this.literal) ; } @Override public int hashCode() { return 919 + 139 * literal.hashCode() ; } @Override public org.rascalmpl.ast.Literal getLiteral() { return this.literal; } @Override public boolean hasLiteral() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(literal)); } } public boolean isMap() { return false; } static public class Map extends Expression { // Production: sig("Map",[arg("java.util.List\<org.rascalmpl.ast.Mapping_Expression\>","mappings")],breakable=false) private final java.util.List<org.rascalmpl.ast.Mapping_Expression> mappings; public Map(ISourceLocation src, IConstructor node , java.util.List<org.rascalmpl.ast.Mapping_Expression> mappings) { super(src, node); this.mappings = mappings; } @Override public boolean isMap() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionMap(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; for (AbstractAST $elem : mappings) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Map)) { return false; } Map tmp = (Map) o; return true && tmp.mappings.equals(this.mappings) ; } @Override public int hashCode() { return 907 + 467 * mappings.hashCode() ; } @Override public java.util.List<org.rascalmpl.ast.Mapping_Expression> getMappings() { return this.mappings; } @Override public boolean hasMappings() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(mappings)); } } public boolean isMatch() { return false; } static public class Match extends Expression { // Production: sig("Match",[arg("org.rascalmpl.ast.Expression","pattern"),arg("org.rascalmpl.ast.Expression","expression")],breakable=false) private final org.rascalmpl.ast.Expression pattern; private final org.rascalmpl.ast.Expression expression; public Match(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression pattern, org.rascalmpl.ast.Expression expression) { super(src, node); this.pattern = pattern; this.expression = expression; } @Override public boolean isMatch() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionMatch(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = pattern.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { pattern.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Match)) { return false; } Match tmp = (Match) o; return true && tmp.pattern.equals(this.pattern) && tmp.expression.equals(this.expression) ; } @Override public int hashCode() { return 971 + 811 * pattern.hashCode() + 199 * expression.hashCode() ; } @Override public org.rascalmpl.ast.Expression getPattern() { return this.pattern; } @Override public boolean hasPattern() { return true; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(pattern), clone(expression)); } } public boolean isModulo() { return false; } static public class Modulo extends Expression { // Production: sig("Modulo",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Modulo(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isModulo() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionModulo(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Modulo)) { return false; } Modulo tmp = (Modulo) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 307 + 2 * lhs.hashCode() + 67 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isMultiVariable() { return false; } static public class MultiVariable extends Expression { // Production: sig("MultiVariable",[arg("org.rascalmpl.ast.QualifiedName","qualifiedName")],breakable=false) private final org.rascalmpl.ast.QualifiedName qualifiedName; public MultiVariable(ISourceLocation src, IConstructor node , org.rascalmpl.ast.QualifiedName qualifiedName) { super(src, node); this.qualifiedName = qualifiedName; } @Override public boolean isMultiVariable() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionMultiVariable(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = qualifiedName.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { qualifiedName.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof MultiVariable)) { return false; } MultiVariable tmp = (MultiVariable) o; return true && tmp.qualifiedName.equals(this.qualifiedName) ; } @Override public int hashCode() { return 641 + 233 * qualifiedName.hashCode() ; } @Override public org.rascalmpl.ast.QualifiedName getQualifiedName() { return this.qualifiedName; } @Override public boolean hasQualifiedName() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(qualifiedName)); } } public boolean isNegation() { return false; } static public class Negation extends Expression { // Production: sig("Negation",[arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Expression argument; public Negation(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression argument) { super(src, node); this.argument = argument; } @Override public boolean isNegation() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionNegation(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Negation)) { return false; } Negation tmp = (Negation) o; return true && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 37 + 251 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(argument)); } } public boolean isNegative() { return false; } static public class Negative extends Expression { // Production: sig("Negative",[arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Expression argument; public Negative(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression argument) { super(src, node); this.argument = argument; } @Override public boolean isNegative() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionNegative(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Negative)) { return false; } Negative tmp = (Negative) o; return true && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 239 + 569 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(argument)); } } public boolean isNoMatch() { return false; } static public class NoMatch extends Expression { // Production: sig("NoMatch",[arg("org.rascalmpl.ast.Expression","pattern"),arg("org.rascalmpl.ast.Expression","expression")],breakable=false) private final org.rascalmpl.ast.Expression pattern; private final org.rascalmpl.ast.Expression expression; public NoMatch(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression pattern, org.rascalmpl.ast.Expression expression) { super(src, node); this.pattern = pattern; this.expression = expression; } @Override public boolean isNoMatch() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionNoMatch(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = pattern.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { pattern.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof NoMatch)) { return false; } NoMatch tmp = (NoMatch) o; return true && tmp.pattern.equals(this.pattern) && tmp.expression.equals(this.expression) ; } @Override public int hashCode() { return 61 + 3 * pattern.hashCode() + 503 * expression.hashCode() ; } @Override public org.rascalmpl.ast.Expression getPattern() { return this.pattern; } @Override public boolean hasPattern() { return true; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(pattern), clone(expression)); } } public boolean isNonEmptyBlock() { return false; } static public class NonEmptyBlock extends Expression { // Production: sig("NonEmptyBlock",[arg("java.util.List\<org.rascalmpl.ast.Statement\>","statements")],breakable=false) private final java.util.List<org.rascalmpl.ast.Statement> statements; public NonEmptyBlock(ISourceLocation src, IConstructor node , java.util.List<org.rascalmpl.ast.Statement> statements) { super(src, node); this.statements = statements; } @Override public boolean isNonEmptyBlock() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionNonEmptyBlock(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; for (AbstractAST $elem : statements) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof NonEmptyBlock)) { return false; } NonEmptyBlock tmp = (NonEmptyBlock) o; return true && tmp.statements.equals(this.statements) ; } @Override public int hashCode() { return 757 + 877 * statements.hashCode() ; } @Override public java.util.List<org.rascalmpl.ast.Statement> getStatements() { return this.statements; } @Override public boolean hasStatements() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(statements)); } } public boolean isNonEquals() { return false; } static public class NonEquals extends Expression { // Production: sig("NonEquals",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public NonEquals(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isNonEquals() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionNonEquals(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof NonEquals)) { return false; } NonEquals tmp = (NonEquals) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 331 + 2 * lhs.hashCode() + 577 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isNotIn() { return false; } static public class NotIn extends Expression { // Production: sig("NotIn",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public NotIn(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isNotIn() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionNotIn(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof NotIn)) { return false; } NotIn tmp = (NotIn) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 3 + 521 * lhs.hashCode() + 31 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isOr() { return false; } static public class Or extends Expression { // Production: sig("Or",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Or(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isOr() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionOr(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Or)) { return false; } Or tmp = (Or) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 23 + 863 * lhs.hashCode() + 5 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isProduct() { return false; } static public class Product extends Expression { // Production: sig("Product",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Product(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isProduct() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionProduct(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Product)) { return false; } Product tmp = (Product) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 313 + 853 * lhs.hashCode() + 151 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isQualifiedName() { return false; } static public class QualifiedName extends Expression { // Production: sig("QualifiedName",[arg("org.rascalmpl.ast.QualifiedName","qualifiedName")],breakable=false) private final org.rascalmpl.ast.QualifiedName qualifiedName; public QualifiedName(ISourceLocation src, IConstructor node , org.rascalmpl.ast.QualifiedName qualifiedName) { super(src, node); this.qualifiedName = qualifiedName; } @Override public boolean isQualifiedName() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionQualifiedName(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = qualifiedName.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { qualifiedName.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof QualifiedName)) { return false; } QualifiedName tmp = (QualifiedName) o; return true && tmp.qualifiedName.equals(this.qualifiedName) ; } @Override public int hashCode() { return 761 + 641 * qualifiedName.hashCode() ; } @Override public org.rascalmpl.ast.QualifiedName getQualifiedName() { return this.qualifiedName; } @Override public boolean hasQualifiedName() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(qualifiedName)); } } public boolean isRange() { return false; } static public class Range extends Expression { // Production: sig("Range",[arg("org.rascalmpl.ast.Expression","first"),arg("org.rascalmpl.ast.Expression","last")],breakable=false) private final org.rascalmpl.ast.Expression first; private final org.rascalmpl.ast.Expression last; public Range(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression first, org.rascalmpl.ast.Expression last) { super(src, node); this.first = first; this.last = last; } @Override public boolean isRange() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionRange(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = first.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { first.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = last.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { last.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Range)) { return false; } Range tmp = (Range) o; return true && tmp.first.equals(this.first) && tmp.last.equals(this.last) ; } @Override public int hashCode() { return 163 + 647 * first.hashCode() + 269 * last.hashCode() ; } @Override public org.rascalmpl.ast.Expression getFirst() { return this.first; } @Override public boolean hasFirst() { return true; } @Override public org.rascalmpl.ast.Expression getLast() { return this.last; } @Override public boolean hasLast() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(first), clone(last)); } } public boolean isReducer() { return false; } static public class Reducer extends Expression { // Production: sig("Reducer",[arg("org.rascalmpl.ast.Expression","init"),arg("org.rascalmpl.ast.Expression","result"),arg("java.util.List\<org.rascalmpl.ast.Expression\>","generators")],breakable=false) private final org.rascalmpl.ast.Expression init; private final org.rascalmpl.ast.Expression result; private final java.util.List<org.rascalmpl.ast.Expression> generators; public Reducer(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression init, org.rascalmpl.ast.Expression result, java.util.List<org.rascalmpl.ast.Expression> generators) { super(src, node); this.init = init; this.result = result; this.generators = generators; } @Override public boolean isReducer() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionReducer(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = init.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { init.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = result.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { result.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : generators) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Reducer)) { return false; } Reducer tmp = (Reducer) o; return true && tmp.init.equals(this.init) && tmp.result.equals(this.result) && tmp.generators.equals(this.generators) ; } @Override public int hashCode() { return 107 + 163 * init.hashCode() + 17 * result.hashCode() + 443 * generators.hashCode() ; } @Override public org.rascalmpl.ast.Expression getInit() { return this.init; } @Override public boolean hasInit() { return true; } @Override public org.rascalmpl.ast.Expression getResult() { return this.result; } @Override public boolean hasResult() { return true; } @Override public java.util.List<org.rascalmpl.ast.Expression> getGenerators() { return this.generators; } @Override public boolean hasGenerators() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(init), clone(result), clone(generators)); } } public boolean isReifiedType() { return false; } static public class ReifiedType extends Expression { // Production: sig("ReifiedType",[arg("org.rascalmpl.ast.Expression","symbol"),arg("org.rascalmpl.ast.Expression","definitions")],breakable=false) private final org.rascalmpl.ast.Expression symbol; private final org.rascalmpl.ast.Expression definitions; public ReifiedType(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression symbol, org.rascalmpl.ast.Expression definitions) { super(src, node); this.symbol = symbol; this.definitions = definitions; } @Override public boolean isReifiedType() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionReifiedType(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = symbol.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { symbol.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = definitions.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { definitions.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof ReifiedType)) { return false; } ReifiedType tmp = (ReifiedType) o; return true && tmp.symbol.equals(this.symbol) && tmp.definitions.equals(this.definitions) ; } @Override public int hashCode() { return 23 + 17 * symbol.hashCode() + 557 * definitions.hashCode() ; } @Override public org.rascalmpl.ast.Expression getSymbol() { return this.symbol; } @Override public boolean hasSymbol() { return true; } @Override public org.rascalmpl.ast.Expression getDefinitions() { return this.definitions; } @Override public boolean hasDefinitions() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(symbol), clone(definitions)); } } public boolean isReifyType() { return false; } static public class ReifyType extends Expression { // Production: sig("ReifyType",[arg("org.rascalmpl.ast.Type","type")],breakable=false) private final org.rascalmpl.ast.Type type; public ReifyType(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type type) { super(src, node); this.type = type; } @Override public boolean isReifyType() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionReifyType(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = type.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { type.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof ReifyType)) { return false; } ReifyType tmp = (ReifyType) o; return true && tmp.type.equals(this.type) ; } @Override public int hashCode() { return 251 + 191 * type.hashCode() ; } @Override public org.rascalmpl.ast.Type getType() { return this.type; } @Override public boolean hasType() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(type)); } } public boolean isRemainder() { return false; } static public class Remainder extends Expression { // Production: sig("Remainder",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Remainder(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isRemainder() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionRemainder(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Remainder)) { return false; } Remainder tmp = (Remainder) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 563 + 23 * lhs.hashCode() + 953 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isSet() { return false; } static public class Set extends Expression { // Production: sig("Set",[arg("java.util.List\<org.rascalmpl.ast.Expression\>","elements0")],breakable=false) private final java.util.List<org.rascalmpl.ast.Expression> elements0; public Set(ISourceLocation src, IConstructor node , java.util.List<org.rascalmpl.ast.Expression> elements0) { super(src, node); this.elements0 = elements0; } @Override public boolean isSet() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSet(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; for (AbstractAST $elem : elements0) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Set)) { return false; } Set tmp = (Set) o; return true && tmp.elements0.equals(this.elements0) ; } @Override public int hashCode() { return 863 + 521 * elements0.hashCode() ; } @Override public java.util.List<org.rascalmpl.ast.Expression> getElements0() { return this.elements0; } @Override public boolean hasElements0() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(elements0)); } } public boolean isSetAnnotation() { return false; } static public class SetAnnotation extends Expression { // Production: sig("SetAnnotation",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.Name","name"),arg("org.rascalmpl.ast.Expression","value")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.Name name; private final org.rascalmpl.ast.Expression value; public SetAnnotation(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.Name name, org.rascalmpl.ast.Expression value) { super(src, node); this.expression = expression; this.name = name; this.value = value; } @Override public boolean isSetAnnotation() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSetAnnotation(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = name.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { name.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = value.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { value.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof SetAnnotation)) { return false; } SetAnnotation tmp = (SetAnnotation) o; return true && tmp.expression.equals(this.expression) && tmp.name.equals(this.name) && tmp.value.equals(this.value) ; } @Override public int hashCode() { return 977 + 269 * expression.hashCode() + 373 * name.hashCode() + 373 * value.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.Name getName() { return this.name; } @Override public boolean hasName() { return true; } @Override public org.rascalmpl.ast.Expression getValue() { return this.value; } @Override public boolean hasValue() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(name), clone(value)); } } public boolean isSlice() { return false; } static public class Slice extends Expression { // Production: sig("Slice",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.OptionalExpression","optFirst"),arg("org.rascalmpl.ast.OptionalExpression","optLast")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.OptionalExpression optFirst; private final org.rascalmpl.ast.OptionalExpression optLast; public Slice(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.OptionalExpression optFirst, org.rascalmpl.ast.OptionalExpression optLast) { super(src, node); this.expression = expression; this.optFirst = optFirst; this.optLast = optLast; } @Override public boolean isSlice() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSlice(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = optFirst.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { optFirst.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = optLast.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { optLast.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Slice)) { return false; } Slice tmp = (Slice) o; return true && tmp.expression.equals(this.expression) && tmp.optFirst.equals(this.optFirst) && tmp.optLast.equals(this.optLast) ; } @Override public int hashCode() { return 809 + 103 * expression.hashCode() + 79 * optFirst.hashCode() + 67 * optLast.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.OptionalExpression getOptFirst() { return this.optFirst; } @Override public boolean hasOptFirst() { return true; } @Override public org.rascalmpl.ast.OptionalExpression getOptLast() { return this.optLast; } @Override public boolean hasOptLast() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(optFirst), clone(optLast)); } } public boolean isSliceStep() { return false; } static public class SliceStep extends Expression { // Production: sig("SliceStep",[arg("org.rascalmpl.ast.Expression","expression"),arg("org.rascalmpl.ast.OptionalExpression","optFirst"),arg("org.rascalmpl.ast.Expression","second"),arg("org.rascalmpl.ast.OptionalExpression","optLast")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final org.rascalmpl.ast.OptionalExpression optFirst; private final org.rascalmpl.ast.Expression second; private final org.rascalmpl.ast.OptionalExpression optLast; public SliceStep(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, org.rascalmpl.ast.OptionalExpression optFirst, org.rascalmpl.ast.Expression second, org.rascalmpl.ast.OptionalExpression optLast) { super(src, node); this.expression = expression; this.optFirst = optFirst; this.second = second; this.optLast = optLast; } @Override public boolean isSliceStep() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSliceStep(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = optFirst.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { optFirst.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = second.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { second.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = optLast.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { optLast.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof SliceStep)) { return false; } SliceStep tmp = (SliceStep) o; return true && tmp.expression.equals(this.expression) && tmp.optFirst.equals(this.optFirst) && tmp.second.equals(this.second) && tmp.optLast.equals(this.optLast) ; } @Override public int hashCode() { return 457 + 509 * expression.hashCode() + 337 * optFirst.hashCode() + 269 * second.hashCode() + 277 * optLast.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public org.rascalmpl.ast.OptionalExpression getOptFirst() { return this.optFirst; } @Override public boolean hasOptFirst() { return true; } @Override public org.rascalmpl.ast.Expression getSecond() { return this.second; } @Override public boolean hasSecond() { return true; } @Override public org.rascalmpl.ast.OptionalExpression getOptLast() { return this.optLast; } @Override public boolean hasOptLast() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(optFirst), clone(second), clone(optLast)); } } public boolean isSplice() { return false; } static public class Splice extends Expression { // Production: sig("Splice",[arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Expression argument; public Splice(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression argument) { super(src, node); this.argument = argument; } @Override public boolean isSplice() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSplice(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Splice)) { return false; } Splice tmp = (Splice) o; return true && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 983 + 613 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(argument)); } } public boolean isSplicePlus() { return false; } static public class SplicePlus extends Expression { // Production: sig("SplicePlus",[arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Expression argument; public SplicePlus(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression argument) { super(src, node); this.argument = argument; } @Override public boolean isSplicePlus() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSplicePlus(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof SplicePlus)) { return false; } SplicePlus tmp = (SplicePlus) o; return true && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 449 + 227 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(argument)); } } public boolean isStepRange() { return false; } static public class StepRange extends Expression { // Production: sig("StepRange",[arg("org.rascalmpl.ast.Expression","first"),arg("org.rascalmpl.ast.Expression","second"),arg("org.rascalmpl.ast.Expression","last")],breakable=false) private final org.rascalmpl.ast.Expression first; private final org.rascalmpl.ast.Expression second; private final org.rascalmpl.ast.Expression last; public StepRange(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression first, org.rascalmpl.ast.Expression second, org.rascalmpl.ast.Expression last) { super(src, node); this.first = first; this.second = second; this.last = last; } @Override public boolean isStepRange() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionStepRange(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = first.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { first.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = second.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { second.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = last.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { last.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof StepRange)) { return false; } StepRange tmp = (StepRange) o; return true && tmp.first.equals(this.first) && tmp.second.equals(this.second) && tmp.last.equals(this.last) ; } @Override public int hashCode() { return 601 + 29 * first.hashCode() + 283 * second.hashCode() + 751 * last.hashCode() ; } @Override public org.rascalmpl.ast.Expression getFirst() { return this.first; } @Override public boolean hasFirst() { return true; } @Override public org.rascalmpl.ast.Expression getSecond() { return this.second; } @Override public boolean hasSecond() { return true; } @Override public org.rascalmpl.ast.Expression getLast() { return this.last; } @Override public boolean hasLast() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(first), clone(second), clone(last)); } } public boolean isSubscript() { return false; } static public class Subscript extends Expression { // Production: sig("Subscript",[arg("org.rascalmpl.ast.Expression","expression"),arg("java.util.List\<org.rascalmpl.ast.Expression\>","subscripts")],breakable=false) private final org.rascalmpl.ast.Expression expression; private final java.util.List<org.rascalmpl.ast.Expression> subscripts; public Subscript(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression expression, java.util.List<org.rascalmpl.ast.Expression> subscripts) { super(src, node); this.expression = expression; this.subscripts = subscripts; } @Override public boolean isSubscript() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSubscript(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = expression.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { expression.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : subscripts) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Subscript)) { return false; } Subscript tmp = (Subscript) o; return true && tmp.expression.equals(this.expression) && tmp.subscripts.equals(this.subscripts) ; } @Override public int hashCode() { return 839 + 739 * expression.hashCode() + 347 * subscripts.hashCode() ; } @Override public org.rascalmpl.ast.Expression getExpression() { return this.expression; } @Override public boolean hasExpression() { return true; } @Override public java.util.List<org.rascalmpl.ast.Expression> getSubscripts() { return this.subscripts; } @Override public boolean hasSubscripts() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(expression), clone(subscripts)); } } public boolean isSubtraction() { return false; } static public class Subtraction extends Expression { // Production: sig("Subtraction",[arg("org.rascalmpl.ast.Expression","lhs"),arg("org.rascalmpl.ast.Expression","rhs")],breakable=false) private final org.rascalmpl.ast.Expression lhs; private final org.rascalmpl.ast.Expression rhs; public Subtraction(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression lhs, org.rascalmpl.ast.Expression rhs) { super(src, node); this.lhs = lhs; this.rhs = rhs; } @Override public boolean isSubtraction() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionSubtraction(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = lhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { lhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = rhs.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { rhs.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Subtraction)) { return false; } Subtraction tmp = (Subtraction) o; return true && tmp.lhs.equals(this.lhs) && tmp.rhs.equals(this.rhs) ; } @Override public int hashCode() { return 719 + 691 * lhs.hashCode() + 433 * rhs.hashCode() ; } @Override public org.rascalmpl.ast.Expression getLhs() { return this.lhs; } @Override public boolean hasLhs() { return true; } @Override public org.rascalmpl.ast.Expression getRhs() { return this.rhs; } @Override public boolean hasRhs() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(lhs), clone(rhs)); } } public boolean isTransitiveClosure() { return false; } static public class TransitiveClosure extends Expression { // Production: sig("TransitiveClosure",[arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Expression argument; public TransitiveClosure(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression argument) { super(src, node); this.argument = argument; } @Override public boolean isTransitiveClosure() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionTransitiveClosure(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof TransitiveClosure)) { return false; } TransitiveClosure tmp = (TransitiveClosure) o; return true && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 953 + 367 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(argument)); } } public boolean isTransitiveReflexiveClosure() { return false; } static public class TransitiveReflexiveClosure extends Expression { // Production: sig("TransitiveReflexiveClosure",[arg("org.rascalmpl.ast.Expression","argument")],breakable=false) private final org.rascalmpl.ast.Expression argument; public TransitiveReflexiveClosure(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Expression argument) { super(src, node); this.argument = argument; } @Override public boolean isTransitiveReflexiveClosure() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionTransitiveReflexiveClosure(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = argument.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { argument.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof TransitiveReflexiveClosure)) { return false; } TransitiveReflexiveClosure tmp = (TransitiveReflexiveClosure) o; return true && tmp.argument.equals(this.argument) ; } @Override public int hashCode() { return 991 + 461 * argument.hashCode() ; } @Override public org.rascalmpl.ast.Expression getArgument() { return this.argument; } @Override public boolean hasArgument() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(argument)); } } public boolean isTuple() { return false; } static public class Tuple extends Expression { // Production: sig("Tuple",[arg("java.util.List\<org.rascalmpl.ast.Expression\>","elements")],breakable=false) private final java.util.List<org.rascalmpl.ast.Expression> elements; public Tuple(ISourceLocation src, IConstructor node , java.util.List<org.rascalmpl.ast.Expression> elements) { super(src, node); this.elements = elements; } @Override public boolean isTuple() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionTuple(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; for (AbstractAST $elem : elements) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof Tuple)) { return false; } Tuple tmp = (Tuple) o; return true && tmp.elements.equals(this.elements) ; } @Override public int hashCode() { return 599 + 863 * elements.hashCode() ; } @Override public java.util.List<org.rascalmpl.ast.Expression> getElements() { return this.elements; } @Override public boolean hasElements() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(elements)); } } public boolean isTypedVariable() { return false; } static public class TypedVariable extends Expression { // Production: sig("TypedVariable",[arg("org.rascalmpl.ast.Type","type"),arg("org.rascalmpl.ast.Name","name")],breakable=false) private final org.rascalmpl.ast.Type type; private final org.rascalmpl.ast.Name name; public TypedVariable(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type type, org.rascalmpl.ast.Name name) { super(src, node); this.type = type; this.name = name; } @Override public boolean isTypedVariable() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionTypedVariable(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = type.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { type.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = name.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { name.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof TypedVariable)) { return false; } TypedVariable tmp = (TypedVariable) o; return true && tmp.type.equals(this.type) && tmp.name.equals(this.name) ; } @Override public int hashCode() { return 331 + 347 * type.hashCode() + 487 * name.hashCode() ; } @Override public org.rascalmpl.ast.Type getType() { return this.type; } @Override public boolean hasType() { return true; } @Override public org.rascalmpl.ast.Name getName() { return this.name; } @Override public boolean hasName() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(type), clone(name)); } } public boolean isTypedVariableBecomes() { return false; } static public class TypedVariableBecomes extends Expression { // Production: sig("TypedVariableBecomes",[arg("org.rascalmpl.ast.Type","type"),arg("org.rascalmpl.ast.Name","name"),arg("org.rascalmpl.ast.Expression","pattern")],breakable=false) private final org.rascalmpl.ast.Type type; private final org.rascalmpl.ast.Name name; private final org.rascalmpl.ast.Expression pattern; public TypedVariableBecomes(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type type, org.rascalmpl.ast.Name name, org.rascalmpl.ast.Expression pattern) { super(src, node); this.type = type; this.name = name; this.pattern = pattern; } @Override public boolean isTypedVariableBecomes() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionTypedVariableBecomes(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = type.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { type.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = name.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { name.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = pattern.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { pattern.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof TypedVariableBecomes)) { return false; } TypedVariableBecomes tmp = (TypedVariableBecomes) o; return true && tmp.type.equals(this.type) && tmp.name.equals(this.name) && tmp.pattern.equals(this.pattern) ; } @Override public int hashCode() { return 53 + 983 * type.hashCode() + 653 * name.hashCode() + 29 * pattern.hashCode() ; } @Override public org.rascalmpl.ast.Type getType() { return this.type; } @Override public boolean hasType() { return true; } @Override public org.rascalmpl.ast.Name getName() { return this.name; } @Override public boolean hasName() { return true; } @Override public org.rascalmpl.ast.Expression getPattern() { return this.pattern; } @Override public boolean hasPattern() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(type), clone(name), clone(pattern)); } } public boolean isVariableBecomes() { return false; } static public class VariableBecomes extends Expression { // Production: sig("VariableBecomes",[arg("org.rascalmpl.ast.Name","name"),arg("org.rascalmpl.ast.Expression","pattern")],breakable=false) private final org.rascalmpl.ast.Name name; private final org.rascalmpl.ast.Expression pattern; public VariableBecomes(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Name name, org.rascalmpl.ast.Expression pattern) { super(src, node); this.name = name; this.pattern = pattern; } @Override public boolean isVariableBecomes() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionVariableBecomes(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = name.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { name.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = pattern.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { pattern.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof VariableBecomes)) { return false; } VariableBecomes tmp = (VariableBecomes) o; return true && tmp.name.equals(this.name) && tmp.pattern.equals(this.pattern) ; } @Override public int hashCode() { return 487 + 653 * name.hashCode() + 373 * pattern.hashCode() ; } @Override public org.rascalmpl.ast.Name getName() { return this.name; } @Override public boolean hasName() { return true; } @Override public org.rascalmpl.ast.Expression getPattern() { return this.pattern; } @Override public boolean hasPattern() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(name), clone(pattern)); } } public boolean isVisit() { return false; } static public class Visit extends Expression { // Production: sig("Visit",[arg("org.rascalmpl.ast.Label","label"),arg("org.rascalmpl.ast.Visit","visit")],breakable=false) private final org.rascalmpl.ast.Label label; private final org.rascalmpl.ast.Visit visit; public Visit(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Label label, org.rascalmpl.ast.Visit visit) { super(src, node); this.label = label; this.visit = visit; } @Override public boolean isVisit() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionVisit(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = label.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { label.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } $l = visit.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { visit.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } @Override public boolean equals(Object o) { if (!(o instanceof Visit)) { return false; } Visit tmp = (Visit) o; return true && tmp.label.equals(this.label) && tmp.visit.equals(this.visit) ; } @Override public int hashCode() { return 449 + 251 * label.hashCode() + 109 * visit.hashCode() ; } @Override public org.rascalmpl.ast.Label getLabel() { return this.label; } @Override public boolean hasLabel() { return true; } @Override public org.rascalmpl.ast.Visit getVisit() { return this.visit; } @Override public boolean hasVisit() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(label), clone(visit)); } } public boolean isVoidClosure() { return false; } static public class VoidClosure extends Expression { // Production: sig("VoidClosure",[arg("org.rascalmpl.ast.Parameters","parameters"),arg("java.util.List\<org.rascalmpl.ast.Statement\>","statements0")],breakable=false) private final org.rascalmpl.ast.Parameters parameters; private final java.util.List<org.rascalmpl.ast.Statement> statements0; public VoidClosure(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Parameters parameters, java.util.List<org.rascalmpl.ast.Statement> statements0) { super(src, node); this.parameters = parameters; this.statements0 = statements0; } @Override public boolean isVoidClosure() { return true; } @Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitExpressionVoidClosure(this); } @Override protected void addForLineNumber(int $line, java.util.List<AbstractAST> $result) { if (getLocation().getBeginLine() == $line) { $result.add(this); } ISourceLocation $l; $l = parameters.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { parameters.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } for (AbstractAST $elem : statements0) { $l = $elem.getLocation(); if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) { $elem.addForLineNumber($line, $result); } if ($l.getBeginLine() > $line) { return; } } } @Override public boolean equals(Object o) { if (!(o instanceof VoidClosure)) { return false; } VoidClosure tmp = (VoidClosure) o; return true && tmp.parameters.equals(this.parameters) && tmp.statements0.equals(this.statements0) ; } @Override public int hashCode() { return 967 + 269 * parameters.hashCode() + 97 * statements0.hashCode() ; } @Override public org.rascalmpl.ast.Parameters getParameters() { return this.parameters; } @Override public boolean hasParameters() { return true; } @Override public java.util.List<org.rascalmpl.ast.Statement> getStatements0() { return this.statements0; } @Override public boolean hasStatements0() { return true; } @Override public Object clone() { return newInstance(getClass(), src, (IConstructor) null , clone(parameters), clone(statements0)); } } }