Just as an observation, this will do a full descent of all the alternate handles before checking impl2. Is that desirable? Wouldn't it be better to do HasObject1(objectId) || hasObject2(objectId.name() || for(myalternates) hasObject1 || for( myalternates) hasObject2 ?