private SummaryGroup getSummaryGroup ( final SummaryGroup parent, final Collection<SummaryGroup> groups, final LinkedList<String> hierarchy ) { if ( hierarchy.isEmpty () ) { return parent; } final String level = hierarchy.pollFirst (); for ( final SummaryGroup group : groups ) { if ( group.getName ().equals ( level ) ) { return getSummaryGroup ( group, group.getSubGroups (), hierarchy ); } } // finally we need to create final SummaryGroup group = OsgiFactory.eINSTANCE.createSummaryGroup (); group.setName ( level ); groups.add ( group ); return getSummaryGroup ( group, group.getSubGroups (), hierarchy ); } }