package org.example.expressions.typing; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.xtext.EcoreUtil2; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.example.expressions.expressions.AbstractElement; import org.example.expressions.expressions.ExpressionsModel; import org.example.expressions.expressions.Variable; @SuppressWarnings("all") public class ExpressionsModelUtil { public static List<Variable> variablesDefinedBefore(final AbstractElement e) { List<Variable> _xblockexpression = null; { ExpressionsModel _containerOfType = EcoreUtil2.<ExpressionsModel>getContainerOfType(e, ExpressionsModel.class); final EList<AbstractElement> allElements = _containerOfType.getElements(); final Function1<AbstractElement, Boolean> _function = new Function1<AbstractElement, Boolean>() { @Override public Boolean apply(final AbstractElement it) { return Boolean.valueOf(EcoreUtil.isAncestor(it, e)); } }; final AbstractElement containingElement = IterableExtensions.<AbstractElement>findFirst(allElements, _function); int _indexOf = allElements.indexOf(containingElement); List<AbstractElement> _subList = allElements.subList(0, _indexOf); _xblockexpression = EcoreUtil2.<Variable>typeSelect(_subList, Variable.class); } return _xblockexpression; } }