public static Component getLCM(Component first, Component second) { // TODO problem nested: we have multiple children Component resultComp = first; List<String> resultAnc = ParserUtil.getSourceNameList(resultComp); while (!resultAnc.contains(second.getName())) { resultComp = resultComp.getChild(); resultAnc = ParserUtil.getSourceNameList(resultComp); } return resultComp; }