public static List<Expression> getAllExpressions(ThingMLElement self, Class clazz) { List<Expression> result = new ArrayList<Expression>(); TreeIterator<EObject> it = self.eAllContents(); while (it.hasNext()) { EObject o = it.next(); if (clazz.isInstance(o)) result.add((Expression) o); } if (clazz.isInstance(self)) result.add((Expression) self); return result; }
public static <C> C findContainer(EObject eObject, Class<C> cClass) { while (eObject != null && !cClass.isAssignableFrom(eObject.getClass())) { eObject = eObject.eContainer(); } return (C) eObject; }