private static List<Property> getFlatProperties(Entity entity) { List<Property> properties = new ArrayList<Property>(); TreeIterator<EObject> iter = entity.eAllContents(); while (iter.hasNext()) { EObject obj = iter.next(); if (obj instanceof Property) { Property property = (Property) obj; properties.add(property); } } if (entity.getSuperType() != null) { properties.addAll(getFlatProperties(entity.getSuperType())); } return properties; } }