public static ArrayList<Message> allMessages(Thing thing) { ArrayList<Message> result = new ArrayList<Message>(); for (Thing t : allThingFragments(thing)) { for (Message msg : t.getMessages()) { boolean isPresent = false; for (Message m : result) { if (EcoreUtil.equals(msg, m)) { isPresent = true; break; } } if (!isPresent) result.add(msg); } } return result; }