Component (Container aContainer) { try { if (!myRecursionGuard.add("getFirstComponent")) return null; Component result = myWrappee.getFirstComponent(aContainer); if (result == null) return null; return myExcludes.contains(result) ? getComponentAfter(aContainer, result) : result; } finally { myRecursionGuard.clear(); } }