blob: 1f12de95045d1eace172fade2fe0896a24de4a4a [file] [log] [blame]
/*******************************************************************************
* «codeGenHelper.getCopyright(' * ')»
*
* This code is 100% auto-generated
* using: org.eclipse.ocl.examples.codegen.java.JavaStream
*
* Do not edit it.
********************************************************************************/
package org.eclipse.ocl.pivot.util;
import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.pivot.Behavior;
import org.eclipse.ocl.pivot.Class;
import org.eclipse.ocl.pivot.DataType;
import org.eclipse.ocl.pivot.Element;
import org.eclipse.ocl.pivot.Enumeration;
import org.eclipse.ocl.pivot.EnumerationLiteral;
import org.eclipse.ocl.pivot.ExpressionInOCL;
import org.eclipse.ocl.pivot.Import;
import org.eclipse.ocl.pivot.IterateExp;
import org.eclipse.ocl.pivot.IteratorExp;
import org.eclipse.ocl.pivot.LetExp;
import org.eclipse.ocl.pivot.Library;
import org.eclipse.ocl.pivot.Model;
import org.eclipse.ocl.pivot.OCLExpression;
import org.eclipse.ocl.pivot.Operation;
import org.eclipse.ocl.pivot.Package;
import org.eclipse.ocl.pivot.Parameter;
import org.eclipse.ocl.pivot.PivotPackage;
import org.eclipse.ocl.pivot.Precedence;
import org.eclipse.ocl.pivot.Property;
import org.eclipse.ocl.pivot.StandardLibrary;
import org.eclipse.ocl.pivot.Variable;
import org.eclipse.ocl.pivot.evaluation.Executor;
import org.eclipse.ocl.pivot.ids.ClassId;
import org.eclipse.ocl.pivot.ids.CollectionTypeId;
import org.eclipse.ocl.pivot.ids.IdManager;
import org.eclipse.ocl.pivot.ids.IdResolver;
import org.eclipse.ocl.pivot.ids.NsURIPackageId;
import org.eclipse.ocl.pivot.ids.RootPackageId;
import org.eclipse.ocl.pivot.ids.TypeId;
import org.eclipse.ocl.pivot.ids.ValueId;
import org.eclipse.ocl.pivot.internal.library.executor.ExecutorSingleIterationManager;
import org.eclipse.ocl.pivot.internal.lookup.LookupEnvironment;
import org.eclipse.ocl.pivot.internal.lookup.LookupPackage;
import org.eclipse.ocl.pivot.library.AbstractBinaryOperation;
import org.eclipse.ocl.pivot.library.LibraryIteration;
import org.eclipse.ocl.pivot.library.collection.CollectionIncludesOperation;
import org.eclipse.ocl.pivot.library.collection.OrderedCollectionIndexOfOperation;
import org.eclipse.ocl.pivot.library.collection.OrderedSetSubOrderedSetOperation;
import org.eclipse.ocl.pivot.library.logical.BooleanNotOperation;
import org.eclipse.ocl.pivot.library.numeric.NumericMinusOperation;
import org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsSetOperation;
import org.eclipse.ocl.pivot.library.oclany.OclComparableGreaterThanOperation;
import org.eclipse.ocl.pivot.oclstdlib.OCLstdlibTables;
import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.ValueUtil;
import org.eclipse.ocl.pivot.values.BagValue;
import org.eclipse.ocl.pivot.values.IntegerValue;
import org.eclipse.ocl.pivot.values.InvalidValueException;
import org.eclipse.ocl.pivot.values.OrderedSetValue;
import org.eclipse.ocl.pivot.values.SetValue;
public class AbstractPivotLookupVisitor
extends AbstractExtendingVisitor<LookupEnvironment, LookupEnvironment>
{
public static final @NonNull /*@NonInvalid*/ RootPackageId PACKid_$metamodel$ = IdManager.getRootPackageId("$metamodel$");
public static final @NonNull /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Lookup = IdManager.getNsURIPackageId("http://www.eclipse.org/ocl/2015/Lookup", null, LookupPackage.eINSTANCE);
public static final @NonNull /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot = IdManager.getNsURIPackageId("http://www.eclipse.org/ocl/2015/Pivot", null, PivotPackage.eINSTANCE);
public static final @NonNull /*@NonInvalid*/ RootPackageId PACKid_java_c_s_s_org_eclipse_ocl_pivot_lookup = IdManager.getRootPackageId("java://org.eclipse.ocl.pivot.lookup");
public static final @NonNull /*@NonInvalid*/ RootPackageId PACKid_org_eclipse_ocl_pivot_evaluation = IdManager.getRootPackageId("org.eclipse.ocl.pivot.evaluation");
public static final @NonNull /*@NonInvalid*/ RootPackageId PACKid_org_eclipse_ocl_pivot_ids = IdManager.getRootPackageId("org.eclipse.ocl.pivot.ids");
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_AbstractPivotLookupVisitor = PACKid_java_c_s_s_org_eclipse_ocl_pivot_lookup.getClassId("AbstractPivotLookupVisitor", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Behavior = PACKid_$metamodel$.getClassId("Behavior", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Class = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("Class", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Class_0 = PACKid_$metamodel$.getClassId("Class", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_DataType = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("DataType", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_DataType_0 = PACKid_$metamodel$.getClassId("DataType", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Element = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("Element", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Element_0 = PACKid_$metamodel$.getClassId("Element", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Enumeration = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("Enumeration", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_EnumerationLiteral = PACKid_$metamodel$.getClassId("EnumerationLiteral", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Enumeration_0 = PACKid_$metamodel$.getClassId("Enumeration", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Executor = PACKid_org_eclipse_ocl_pivot_evaluation.getClassId("Executor", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_ExpressionInOCL = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("ExpressionInOCL", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_ExpressionInOCL_0 = PACKid_$metamodel$.getClassId("ExpressionInOCL", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_IdResolver = PACKid_org_eclipse_ocl_pivot_ids.getClassId("IdResolver", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Import = PACKid_$metamodel$.getClassId("Import", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_IterateExp = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("IterateExp", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_IterateExp_0 = PACKid_$metamodel$.getClassId("IterateExp", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_IteratorExp = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("IteratorExp", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_IteratorExp_0 = PACKid_$metamodel$.getClassId("IteratorExp", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_LetExp = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("LetExp", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_LetExp_0 = PACKid_$metamodel$.getClassId("LetExp", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Library = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("Library", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Library_0 = PACKid_$metamodel$.getClassId("Library", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_LookupEnvironment = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Lookup.getClassId("LookupEnvironment", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Model = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("Model", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Model_0 = PACKid_$metamodel$.getClassId("Model", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_OCLExpression = PACKid_$metamodel$.getClassId("OCLExpression", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_OclElement = PACKid_$metamodel$.getClassId("OclElement", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Operation = PACKid_$metamodel$.getClassId("Operation", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Operation_0 = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("Operation", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Package = PACKid_http_c_s_s_www_eclipse_org_s_ocl_s_2015_s_Pivot.getClassId("Package", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Package_0 = PACKid_$metamodel$.getClassId("Package", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Parameter = PACKid_$metamodel$.getClassId("Parameter", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Precedence = PACKid_$metamodel$.getClassId("Precedence", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Property = PACKid_$metamodel$.getClassId("Property", 0);
public static final @NonNull /*@NonInvalid*/ ClassId CLSSid_Variable = PACKid_$metamodel$.getClassId("Variable", 0);
public static final @NonNull /*@NonInvalid*/ IntegerValue INT_1 = ValueUtil.ONE_VALUE;
public static final @NonNull /*@NonInvalid*/ CollectionTypeId BAG_NF_CLSSid_Behavior = TypeId.BAG.getSpecializedId(CLSSid_Behavior, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId BAG_NF_CLSSid_Operation = TypeId.BAG.getSpecializedId(CLSSid_Operation, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId BAG_NF_CLSSid_Property = TypeId.BAG.getSpecializedId(CLSSid_Property, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_CLSSid_Variable = TypeId.ORDERED_SET.getSpecializedId(CLSSid_Variable);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_NF_CLSSid_EnumerationLiteral = TypeId.ORDERED_SET.getSpecializedId(CLSSid_EnumerationLiteral, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_NF_CLSSid_Import = TypeId.ORDERED_SET.getSpecializedId(CLSSid_Import, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_NF_CLSSid_Operation = TypeId.ORDERED_SET.getSpecializedId(CLSSid_Operation, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_NF_CLSSid_Parameter = TypeId.ORDERED_SET.getSpecializedId(CLSSid_Parameter, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_NF_CLSSid_Precedence = TypeId.ORDERED_SET.getSpecializedId(CLSSid_Precedence, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_NF_CLSSid_Property = TypeId.ORDERED_SET.getSpecializedId(CLSSid_Property, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId ORD_NF_CLSSid_Variable = TypeId.ORDERED_SET.getSpecializedId(CLSSid_Variable, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Class = TypeId.SET.getSpecializedId(CLSSid_Class_0);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId SET_NF_1_1_CLSSid_Class = TypeId.SET.getSpecializedId(CLSSid_Class_0, ValueId.TRUE_ID, ValueId.ONE_ID, ValueId.ONE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId SET_NF_1_1_CLSSid_DataType = TypeId.SET.getSpecializedId(CLSSid_DataType_0, ValueId.TRUE_ID, ValueId.ONE_ID, ValueId.ONE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId SET_NF_CLSSid_Behavior = TypeId.SET.getSpecializedId(CLSSid_Behavior, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId SET_NF_CLSSid_Class = TypeId.SET.getSpecializedId(CLSSid_Class_0, ValueId.TRUE_ID);
public static final @NonNull /*@NonInvalid*/ CollectionTypeId SET_NF_CLSSid_Package = TypeId.SET.getSpecializedId(CLSSid_Package_0, ValueId.TRUE_ID);
protected @Nullable /*@Thrown*/ Object child;
protected final @NonNull /*@Thrown*/ Executor executor;
protected final @NonNull /*@Thrown*/ IdResolver idResolver;
public AbstractPivotLookupVisitor(@NonNull LookupEnvironment context) {
super(context);
this.executor = context.getExecutor();
this.idResolver = executor.getIdResolver();
}
/**
* Return the results of a lookup from the child of element.
*/
public @Nullable LookupEnvironment envForChild(@NonNull Object element, @Nullable Object child) {
this.child = element;
return ((Visitable)element).accept(this);
}
/**
* Continue the search for matches in the parent of element.
*/
protected @Nullable LookupEnvironment parentEnv(@NonNull EObject element) {
EObject parent = element.eContainer();
if (parent instanceof Visitable) {
this.child = element;
return ((Visitable)parent).accept(this);
}
else {
return context;
}
}
@Override
public @Nullable LookupEnvironment visiting(@NonNull Visitable visitable) {
throw new UnsupportedOperationException("AbstractPivotLookupVisitor is not supported by \"" + getClass().getName() + "\"");
}
/**
* visitClass(element : Class[1]) : lookup::LookupEnvironment[?]
*
*
* let superClasses : Set(Class) = element->closure(superClasses)
* in
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(
* superClasses.ownedProperties->select(not isStatic))
* .addElements(
* superClasses.ownedOperations->select(not isStatic))
* .addElements(superClasses.ownedBehaviors)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitClass(final @NonNull /*@NonInvalid*/ Class element) {
final @NonNull /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver();
final @NonNull /*@NonInvalid*/ StandardLibrary standardLibrary = idResolver.getStandardLibrary();
final @NonNull /*@NonInvalid*/ SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, SET_NF_1_1_CLSSid_Class, element);
final @NonNull Class TYPE_superClasses_1 = executor.getStaticTypeOf(oclAsSet);
final @NonNull LibraryIteration.LibraryIterationExtension IMPL_superClasses_1 = (LibraryIteration.LibraryIterationExtension)TYPE_superClasses_1.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure);
final @NonNull Object ACC_superClasses_1 = IMPL_superClasses_1.createAccumulatorValue(executor, SET_CLSSid_Class, SET_NF_CLSSid_Class);
/**
* Implementation of the iterator body.
*/
final @NonNull AbstractBinaryOperation BODY_superClasses_1 = new AbstractBinaryOperation()
{
/**
* superClasses
*/
@Override
public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet, final @Nullable /*@NonInvalid*/ Object _1) {
final @Nullable /*@NonInvalid*/ Class symbol_0 = (Class)_1;
if (symbol_0 == null) {
throw new InvalidValueException("Null source for \'Class::superClasses\'");
}
final @NonNull /*@Thrown*/ List<Class> superClasses_0 = symbol_0.getSuperClasses();
final @NonNull /*@Thrown*/ SetValue BOXED_superClasses_0 = idResolver.createSetOfAll(SET_NF_CLSSid_Class, superClasses_0);
return BOXED_superClasses_0;
}
};
final @NonNull ExecutorSingleIterationManager MGR_superClasses_1 = new ExecutorSingleIterationManager(executor, SET_CLSSid_Class, BODY_superClasses_1, oclAsSet, ACC_superClasses_1);
final @NonNull /*@Thrown*/ SetValue superClasses = ClassUtil.nonNullState((SetValue)IMPL_superClasses_1.evaluateIteration(MGR_superClasses_1));
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Property);
@Nullable Iterator<?> ITERATOR__1_0 = superClasses.iterator();
@NonNull /*@Thrown*/ BagValue collect;
while (true) {
if (!ITERATOR__1_0.hasNext()) {
collect = accumulator;
break;
}
@Nullable /*@NonInvalid*/ Class _1_0 = (Class)ITERATOR__1_0.next();
/**
* ownedProperties
*/
if (_1_0 == null) {
throw new InvalidValueException("Null source for \'Class::ownedProperties\'");
}
final @NonNull /*@Thrown*/ List<Property> ownedProperties = _1_0.getOwnedProperties();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedProperties = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Property, ownedProperties);
//
for (Object value : BOXED_ownedProperties.flatten().getElements()) {
accumulator.add(value);
}
}
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator_0 = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Property);
@NonNull Iterator<?> ITERATOR__1_1 = collect.iterator();
@NonNull /*@Thrown*/ BagValue select;
while (true) {
if (!ITERATOR__1_1.hasNext()) {
select = accumulator_0;
break;
}
@SuppressWarnings("null")
@NonNull /*@NonInvalid*/ Property _1_1 = (Property)ITERATOR__1_1.next();
/**
* not isStatic
*/
final /*@Thrown*/ boolean isStatic = _1_1.isIsStatic();
final @Nullable /*@Thrown*/ Boolean not = BooleanNotOperation.INSTANCE.evaluate(isStatic);
if (not == null) {
throw new InvalidValueException("Null body for \'Bag(T).select(Bag.T[?] | Lambda T() : Boolean[1]) : Bag(T)\'");
}
//
if (not == ValueUtil.TRUE_VALUE) {
accumulator_0.add(_1_1);
}
}
final @NonNull /*@Thrown*/ List<Property> ECORE_select = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Property.class, select);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = context.addElements(ECORE_select);
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator_1 = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Operation);
@Nullable Iterator<?> ITERATOR__1_2 = superClasses.iterator();
@NonNull /*@Thrown*/ BagValue collect_0;
while (true) {
if (!ITERATOR__1_2.hasNext()) {
collect_0 = accumulator_1;
break;
}
@Nullable /*@NonInvalid*/ Class _1_2 = (Class)ITERATOR__1_2.next();
/**
* ownedOperations
*/
if (_1_2 == null) {
throw new InvalidValueException("Null source for \'Class::ownedOperations\'");
}
final @NonNull /*@Thrown*/ List<Operation> ownedOperations = _1_2.getOwnedOperations();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedOperations = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Operation, ownedOperations);
//
for (Object value : BOXED_ownedOperations.flatten().getElements()) {
accumulator_1.add(value);
}
}
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator_2 = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Operation);
@NonNull Iterator<?> ITERATOR__1_3 = collect_0.iterator();
@NonNull /*@Thrown*/ BagValue select_0;
while (true) {
if (!ITERATOR__1_3.hasNext()) {
select_0 = accumulator_2;
break;
}
@SuppressWarnings("null")
@NonNull /*@NonInvalid*/ Operation _1_3 = (Operation)ITERATOR__1_3.next();
/**
* not isStatic
*/
final /*@Thrown*/ boolean isStatic_0 = _1_3.isIsStatic();
final @Nullable /*@Thrown*/ Boolean not_0 = BooleanNotOperation.INSTANCE.evaluate(isStatic_0);
if (not_0 == null) {
throw new InvalidValueException("Null body for \'Bag(T).select(Bag.T[?] | Lambda T() : Boolean[1]) : Bag(T)\'");
}
//
if (not_0 == ValueUtil.TRUE_VALUE) {
accumulator_2.add(_1_3);
}
}
final @NonNull /*@Thrown*/ List<Operation> ECORE_select_0 = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Operation.class, select_0);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements_0 = addElements.addElements(ECORE_select_0);
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator_3 = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Behavior);
@Nullable Iterator<?> ITERATOR__1_4 = superClasses.iterator();
@NonNull /*@Thrown*/ BagValue collect_1;
while (true) {
if (!ITERATOR__1_4.hasNext()) {
collect_1 = accumulator_3;
break;
}
@Nullable /*@NonInvalid*/ Class _1_4 = (Class)ITERATOR__1_4.next();
/**
* ownedBehaviors
*/
if (_1_4 == null) {
throw new InvalidValueException("Null source for \'Class::ownedBehaviors\'");
}
final @NonNull /*@Thrown*/ List<Behavior> ownedBehaviors = _1_4.getOwnedBehaviors();
final @NonNull /*@Thrown*/ SetValue BOXED_ownedBehaviors = idResolver.createSetOfAll(SET_NF_CLSSid_Behavior, ownedBehaviors);
//
for (Object value : BOXED_ownedBehaviors.flatten().getElements()) {
accumulator_3.add(value);
}
}
final @NonNull /*@Thrown*/ List<Behavior> ECORE_collect_1 = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Behavior.class, collect_1);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = addElements_0.addElements(ECORE_collect_1);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_1;
if (hasFinalResult) {
symbol_1 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element);
symbol_1 = parentEnv;
}
return symbol_1;
}
/**
* visitDataType(element : DataType[1]) : lookup::LookupEnvironment[?]
*
*
* let superClasses : Set(Class) = element->closure(c | c.superClasses)
* in
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(
* superClasses.ownedProperties->select(not isStatic))
* .addElements(
* superClasses.ownedOperations->select(not isStatic))
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitDataType(final @NonNull /*@NonInvalid*/ DataType element_0) {
final @NonNull /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver();
final @NonNull /*@NonInvalid*/ StandardLibrary standardLibrary = idResolver.getStandardLibrary();
final @NonNull /*@NonInvalid*/ SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, SET_NF_1_1_CLSSid_DataType, element_0);
final @NonNull Class TYPE_superClasses_1 = executor.getStaticTypeOf(oclAsSet);
final @NonNull LibraryIteration.LibraryIterationExtension IMPL_superClasses_1 = (LibraryIteration.LibraryIterationExtension)TYPE_superClasses_1.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure);
final @NonNull Object ACC_superClasses_1 = IMPL_superClasses_1.createAccumulatorValue(executor, SET_CLSSid_Class, SET_NF_CLSSid_Class);
/**
* Implementation of the iterator body.
*/
final @NonNull AbstractBinaryOperation BODY_superClasses_1 = new AbstractBinaryOperation()
{
/**
* c.superClasses
*/
@Override
public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet, final @Nullable /*@NonInvalid*/ Object c) {
final @Nullable /*@NonInvalid*/ Class symbol_0 = (Class)c;
if (symbol_0 == null) {
throw new InvalidValueException("Null source for \'Class::superClasses\'");
}
final @NonNull /*@Thrown*/ List<Class> superClasses_0 = symbol_0.getSuperClasses();
final @NonNull /*@Thrown*/ SetValue BOXED_superClasses_0 = idResolver.createSetOfAll(SET_NF_CLSSid_Class, superClasses_0);
return BOXED_superClasses_0;
}
};
final @NonNull ExecutorSingleIterationManager MGR_superClasses_1 = new ExecutorSingleIterationManager(executor, SET_CLSSid_Class, BODY_superClasses_1, oclAsSet, ACC_superClasses_1);
final @NonNull /*@Thrown*/ SetValue superClasses = ClassUtil.nonNullState((SetValue)IMPL_superClasses_1.evaluateIteration(MGR_superClasses_1));
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Property);
@Nullable Iterator<?> ITERATOR__1 = superClasses.iterator();
@NonNull /*@Thrown*/ BagValue collect;
while (true) {
if (!ITERATOR__1.hasNext()) {
collect = accumulator;
break;
}
@Nullable /*@NonInvalid*/ Class _1 = (Class)ITERATOR__1.next();
/**
* ownedProperties
*/
if (_1 == null) {
throw new InvalidValueException("Null source for \'Class::ownedProperties\'");
}
final @NonNull /*@Thrown*/ List<Property> ownedProperties = _1.getOwnedProperties();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedProperties = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Property, ownedProperties);
//
for (Object value : BOXED_ownedProperties.flatten().getElements()) {
accumulator.add(value);
}
}
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator_0 = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Property);
@NonNull Iterator<?> ITERATOR__1_0 = collect.iterator();
@NonNull /*@Thrown*/ BagValue select;
while (true) {
if (!ITERATOR__1_0.hasNext()) {
select = accumulator_0;
break;
}
@SuppressWarnings("null")
@NonNull /*@NonInvalid*/ Property _1_0 = (Property)ITERATOR__1_0.next();
/**
* not isStatic
*/
final /*@Thrown*/ boolean isStatic = _1_0.isIsStatic();
final @Nullable /*@Thrown*/ Boolean not = BooleanNotOperation.INSTANCE.evaluate(isStatic);
if (not == null) {
throw new InvalidValueException("Null body for \'Bag(T).select(Bag.T[?] | Lambda T() : Boolean[1]) : Bag(T)\'");
}
//
if (not == ValueUtil.TRUE_VALUE) {
accumulator_0.add(_1_0);
}
}
final @NonNull /*@Thrown*/ List<Property> ECORE_select = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Property.class, select);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = context.addElements(ECORE_select);
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator_1 = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Operation);
@Nullable Iterator<?> ITERATOR__1_1 = superClasses.iterator();
@NonNull /*@Thrown*/ BagValue collect_0;
while (true) {
if (!ITERATOR__1_1.hasNext()) {
collect_0 = accumulator_1;
break;
}
@Nullable /*@NonInvalid*/ Class _1_1 = (Class)ITERATOR__1_1.next();
/**
* ownedOperations
*/
if (_1_1 == null) {
throw new InvalidValueException("Null source for \'Class::ownedOperations\'");
}
final @NonNull /*@Thrown*/ List<Operation> ownedOperations = _1_1.getOwnedOperations();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedOperations = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Operation, ownedOperations);
//
for (Object value : BOXED_ownedOperations.flatten().getElements()) {
accumulator_1.add(value);
}
}
@NonNull /*@Thrown*/ BagValue.Accumulator accumulator_2 = ValueUtil.createBagAccumulatorValue(BAG_NF_CLSSid_Operation);
@NonNull Iterator<?> ITERATOR__1_2 = collect_0.iterator();
@NonNull /*@Thrown*/ BagValue select_0;
while (true) {
if (!ITERATOR__1_2.hasNext()) {
select_0 = accumulator_2;
break;
}
@SuppressWarnings("null")
@NonNull /*@NonInvalid*/ Operation _1_2 = (Operation)ITERATOR__1_2.next();
/**
* not isStatic
*/
final /*@Thrown*/ boolean isStatic_0 = _1_2.isIsStatic();
final @Nullable /*@Thrown*/ Boolean not_0 = BooleanNotOperation.INSTANCE.evaluate(isStatic_0);
if (not_0 == null) {
throw new InvalidValueException("Null body for \'Bag(T).select(Bag.T[?] | Lambda T() : Boolean[1]) : Bag(T)\'");
}
//
if (not_0 == ValueUtil.TRUE_VALUE) {
accumulator_2.add(_1_2);
}
}
final @NonNull /*@Thrown*/ List<Operation> ECORE_select_0 = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Operation.class, select_0);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = addElements.addElements(ECORE_select_0);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_1;
if (hasFinalResult) {
symbol_1 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_0);
symbol_1 = parentEnv;
}
return symbol_1;
}
/**
* visitElement(element : Element[1]) : lookup::LookupEnvironment[?]
*
* this.parentEnv(element)
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitElement(final @NonNull /*@NonInvalid*/ Element element_1) {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_1);
return parentEnv;
}
/**
* visitEnumeration(element : Enumeration[1]) : lookup::LookupEnvironment[?]
*
*
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(element.ownedLiterals)
* .addElements(element.ownedProperties->select(not isStatic))
* .addElements(element.ownedOperations->select(not isStatic))
* .addElements(element.ownedBehaviors)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitEnumeration(final @NonNull /*@NonInvalid*/ Enumeration element_2) {
final @NonNull /*@Thrown*/ List<EnumerationLiteral> ownedLiterals = element_2.getOwnedLiterals();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = context.addElements(ownedLiterals);
final @NonNull /*@Thrown*/ List<Property> ownedProperties = element_2.getOwnedProperties();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedProperties = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Property, ownedProperties);
@NonNull /*@Thrown*/ OrderedSetValue.Accumulator accumulator = ValueUtil.createOrderedSetAccumulatorValue(ORD_NF_CLSSid_Property);
@NonNull Iterator<?> ITERATOR__1 = BOXED_ownedProperties.iterator();
@NonNull /*@Thrown*/ OrderedSetValue select;
while (true) {
if (!ITERATOR__1.hasNext()) {
select = accumulator;
break;
}
@SuppressWarnings("null")
@NonNull /*@NonInvalid*/ Property _1 = (Property)ITERATOR__1.next();
/**
* not isStatic
*/
final /*@Thrown*/ boolean isStatic = _1.isIsStatic();
final @Nullable /*@Thrown*/ Boolean not = BooleanNotOperation.INSTANCE.evaluate(isStatic);
if (not == null) {
throw new InvalidValueException("Null body for \'OrderedSet(T).select(OrderedSet.T[?] | Lambda T() : Boolean[1]) : OrderedSet(T)\'");
}
//
if (not == ValueUtil.TRUE_VALUE) {
accumulator.add(_1);
}
}
final @NonNull /*@Thrown*/ List<Property> ECORE_select = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Property.class, select);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements_0 = addElements.addElements(ECORE_select);
final @NonNull /*@Thrown*/ List<Operation> ownedOperations = element_2.getOwnedOperations();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedOperations = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Operation, ownedOperations);
@NonNull /*@Thrown*/ OrderedSetValue.Accumulator accumulator_0 = ValueUtil.createOrderedSetAccumulatorValue(ORD_NF_CLSSid_Operation);
@NonNull Iterator<?> ITERATOR__1_0 = BOXED_ownedOperations.iterator();
@NonNull /*@Thrown*/ OrderedSetValue select_0;
while (true) {
if (!ITERATOR__1_0.hasNext()) {
select_0 = accumulator_0;
break;
}
@SuppressWarnings("null")
@NonNull /*@NonInvalid*/ Operation _1_0 = (Operation)ITERATOR__1_0.next();
/**
* not isStatic
*/
final /*@Thrown*/ boolean isStatic_0 = _1_0.isIsStatic();
final @Nullable /*@Thrown*/ Boolean not_0 = BooleanNotOperation.INSTANCE.evaluate(isStatic_0);
if (not_0 == null) {
throw new InvalidValueException("Null body for \'OrderedSet(T).select(OrderedSet.T[?] | Lambda T() : Boolean[1]) : OrderedSet(T)\'");
}
//
if (not_0 == ValueUtil.TRUE_VALUE) {
accumulator_0.add(_1_0);
}
}
final @NonNull /*@Thrown*/ List<Operation> ECORE_select_0 = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Operation.class, select_0);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements_1 = addElements_0.addElements(ECORE_select_0);
final @NonNull /*@Thrown*/ List<Behavior> ownedBehaviors = element_2.getOwnedBehaviors();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = addElements_1.addElements(ownedBehaviors);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_2);
symbol_0 = parentEnv;
}
return symbol_0;
}
/**
* visitExpressionInOCL(element : ExpressionInOCL[1]) : lookup::LookupEnvironment[?]
*
*
* let
* inner : lookup::LookupEnvironment[1] = context.addElement(element.ownedContext)
* .addElements(element.ownedParameters)
* .addElement(element.ownedResult)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitExpressionInOCL(final @NonNull /*@NonInvalid*/ ExpressionInOCL element_3) {
final @Nullable /*@Thrown*/ Variable ownedContext = element_3.getOwnedContext();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElement = context.addElement(ownedContext);
final @NonNull /*@Thrown*/ List<Variable> ownedParameters = element_3.getOwnedParameters();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = addElement.addElements(ownedParameters);
final @Nullable /*@Thrown*/ Variable ownedResult = element_3.getOwnedResult();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = addElements.addElement(ownedResult);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_3);
symbol_0 = parentEnv;
}
return symbol_0;
}
/**
* visitIterateExp(element : IterateExp[1]) : lookup::LookupEnvironment[?]
*
*
* if child = ownedResult
* then
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(element.ownedIterators)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
* else
* let index : Integer[1] = ownedIterators->indexOf(child)
* in
* if index > 1
* then
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(
* element.ownedIterators->subOrderedSet(1, index - 1))
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
* else
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(element.ownedIterators)
* .addElement(ownedResult)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
* endif
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitIterateExp(final @NonNull /*@NonInvalid*/ IterateExp element_4) {
final @NonNull /*@Thrown*/ List<Variable> ownedIterators = element_4.getOwnedIterators();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ Variable ownedResult = element_4.getOwnedResult();
final /*@Thrown*/ boolean eq = ownedResult.equals(child);
@Nullable /*@Thrown*/ LookupEnvironment symbol_4;
if (eq) {
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = context.addElements(ownedIterators);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_4);
symbol_0 = parentEnv;
}
symbol_4 = symbol_0;
}
else {
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedIterators_0 = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Variable, ownedIterators);
final @NonNull /*@Thrown*/ IntegerValue index = OrderedCollectionIndexOfOperation.INSTANCE.evaluate(BOXED_ownedIterators_0, child);
final /*@Thrown*/ boolean gt = OclComparableGreaterThanOperation.INSTANCE.evaluate(executor, index, INT_1).booleanValue();
@Nullable /*@Thrown*/ LookupEnvironment symbol_3;
if (gt) {
final @NonNull /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(index, INT_1);
final @NonNull /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_ownedIterators_0, INT_1, diff);
final @NonNull /*@Thrown*/ List<Variable> ECORE_subOrderedSet = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Variable.class, subOrderedSet);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner_0 = context.addElements(ECORE_subOrderedSet);
final /*@Thrown*/ boolean hasFinalResult_0 = inner_0.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_1;
if (hasFinalResult_0) {
symbol_1 = inner_0;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv_0 = this.parentEnv(element_4);
symbol_1 = parentEnv_0;
}
symbol_3 = symbol_1;
}
else {
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = context.addElements(ownedIterators);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner_1 = addElements.addElement(ownedResult);
final /*@Thrown*/ boolean hasFinalResult_1 = inner_1.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_2;
if (hasFinalResult_1) {
symbol_2 = inner_1;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv_1 = this.parentEnv(element_4);
symbol_2 = parentEnv_1;
}
symbol_3 = symbol_2;
}
symbol_4 = symbol_3;
}
return symbol_4;
}
/**
* visitIteratorExp(element : IteratorExp[1]) : lookup::LookupEnvironment[?]
*
*
* let index : Integer[1] = ownedIterators->indexOf(child)
* in
* if index > 1
* then
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(
* element.ownedIterators->subOrderedSet(1, index - 1))
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
* else
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(element.ownedIterators)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitIteratorExp(final @NonNull /*@NonInvalid*/ IteratorExp element_5) {
final @NonNull /*@Thrown*/ List<Variable> ownedIterators = element_5.getOwnedIterators();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedIterators = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Variable, ownedIterators);
final @NonNull /*@Thrown*/ IntegerValue index = OrderedCollectionIndexOfOperation.INSTANCE.evaluate(BOXED_ownedIterators, child);
final /*@Thrown*/ boolean gt = OclComparableGreaterThanOperation.INSTANCE.evaluate(executor, index, INT_1).booleanValue();
@Nullable /*@Thrown*/ LookupEnvironment symbol_2;
if (gt) {
final @NonNull /*@Thrown*/ IntegerValue diff = (IntegerValue)NumericMinusOperation.INSTANCE.evaluate(index, INT_1);
final @NonNull /*@Thrown*/ OrderedSetValue subOrderedSet = OrderedSetSubOrderedSetOperation.INSTANCE.evaluate(BOXED_ownedIterators, INT_1, diff);
final @NonNull /*@Thrown*/ List<Variable> ECORE_subOrderedSet = ((IdResolver.IdResolverExtension)idResolver).ecoreValueOfAll(Variable.class, subOrderedSet);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = context.addElements(ECORE_subOrderedSet);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_5);
symbol_0 = parentEnv;
}
symbol_2 = symbol_0;
}
else {
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner_0 = context.addElements(ownedIterators);
final /*@Thrown*/ boolean hasFinalResult_0 = inner_0.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_1;
if (hasFinalResult_0) {
symbol_1 = inner_0;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv_0 = this.parentEnv(element_5);
symbol_1 = parentEnv_0;
}
symbol_2 = symbol_1;
}
return symbol_2;
}
/**
* visitLetExp(element : LetExp[1]) : lookup::LookupEnvironment[?]
*
*
* if child = ownedIn
* then
* let
* inner : lookup::LookupEnvironment[1] = context.addElement(element.ownedVariable)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
* else this.parentEnv(element)
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitLetExp(final @NonNull /*@NonInvalid*/ LetExp element_6) {
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ OCLExpression ownedIn = element_6.getOwnedIn();
final /*@Thrown*/ boolean eq = ownedIn.equals(child);
@Nullable /*@Thrown*/ LookupEnvironment symbol_1;
if (eq) {
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ Variable ownedVariable = element_6.getOwnedVariable();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = context.addElement(ownedVariable);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_6);
symbol_0 = parentEnv;
}
symbol_1 = symbol_0;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv_0 = this.parentEnv(element_6);
symbol_1 = parentEnv_0;
}
return symbol_1;
}
/**
* visitLibrary(element : Library[1]) : lookup::LookupEnvironment[?]
*
*
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(element.ownedPackages)
* .addElements(element.ownedClasses)
* .addElements(element.ownedPrecedences)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitLibrary(final @NonNull /*@NonInvalid*/ Library element_7) {
final @NonNull /*@Thrown*/ List<Package> ownedPackages = element_7.getOwnedPackages();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = context.addElements(ownedPackages);
final @NonNull /*@Thrown*/ List<Class> ownedClasses = element_7.getOwnedClasses();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements_0 = addElements.addElements(ownedClasses);
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ List<Precedence> ownedPrecedences = element_7.getOwnedPrecedences();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = addElements_0.addElements(ownedPrecedences);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_7);
symbol_0 = parentEnv;
}
return symbol_0;
}
/**
* visitModel(element : Model[1]) : lookup::LookupEnvironment[?]
*
*
* this.parentEnv(element)
* .addElements(element.ownedImports)
* .addElements(element.ownedPackages)
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitModel(final @NonNull /*@NonInvalid*/ Model element_8) {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_8);
if (parentEnv == null) {
throw new InvalidValueException("Null source for \'lookup::LookupEnvironment::addElements(NE)(Collection(addElements.NE)) : lookup::LookupEnvironment[1]\'");
}
final @NonNull /*@Thrown*/ List<Import> ownedImports = element_8.getOwnedImports();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = parentEnv.addElements(ownedImports);
final @NonNull /*@Thrown*/ List<Package> ownedPackages = element_8.getOwnedPackages();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements_0 = addElements.addElements(ownedPackages);
return addElements_0;
}
/**
* visitOperation(element : Operation[1]) : lookup::LookupEnvironment[?]
*
*
* if ownedParameters->includes(child)
* then this.parentEnv(element)
* else
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(element.ownedParameters)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitOperation(final @NonNull /*@NonInvalid*/ Operation element_9) {
final @NonNull /*@Thrown*/ List<Parameter> ownedParameters = element_9.getOwnedParameters();
final @NonNull /*@Thrown*/ OrderedSetValue BOXED_ownedParameters = idResolver.createOrderedSetOfAll(ORD_NF_CLSSid_Parameter, ownedParameters);
final /*@Thrown*/ boolean includes = CollectionIncludesOperation.INSTANCE.evaluate(BOXED_ownedParameters, child).booleanValue();
@Nullable /*@Thrown*/ LookupEnvironment symbol_1;
if (includes) {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_9);
symbol_1 = parentEnv;
}
else {
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = context.addElements(ownedParameters);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv_0 = this.parentEnv(element_9);
symbol_0 = parentEnv_0;
}
symbol_1 = symbol_0;
}
return symbol_1;
}
/**
* visitPackage(element : Package[1]) : lookup::LookupEnvironment[?]
*
*
* let
* inner : lookup::LookupEnvironment[1] = context.addElements(element.ownedPackages)
* .addElements(element.ownedClasses)
* in
* if inner.hasFinalResult()
* then inner
* else this.parentEnv(element)
* endif
*/
@Override
public @Nullable /*@NonInvalid*/ LookupEnvironment visitPackage(final @NonNull /*@NonInvalid*/ Package element_10) {
final @NonNull /*@Thrown*/ List<Package> ownedPackages = element_10.getOwnedPackages();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment addElements = context.addElements(ownedPackages);
final @NonNull /*@Thrown*/ List<Class> ownedClasses = element_10.getOwnedClasses();
@SuppressWarnings("null")
final @NonNull /*@Thrown*/ LookupEnvironment inner = addElements.addElements(ownedClasses);
final /*@Thrown*/ boolean hasFinalResult = inner.hasFinalResult();
@Nullable /*@Thrown*/ LookupEnvironment symbol_0;
if (hasFinalResult) {
symbol_0 = inner;
}
else {
final @Nullable /*@Thrown*/ LookupEnvironment parentEnv = this.parentEnv(element_10);
symbol_0 = parentEnv;
}
return symbol_0;
}
}