public Set<String> lookupTargetNodes(final Graph<?, ? extends Node> graph, final Node<? extends Definition<Object>, ? extends Edge> sourceNode, final String edgeId, final Predicate<String> definitionIdsAllowedFilter) { final DomainLookupContext context = newContext(); final Set<String> targetRoles = new LookupTargetRoles(sourceNode, edgeId) .execute(context); final Set<String> allowedTargetDefinitions = new LookupAllowedDefinitionsByLabels(graph, targetRoles, definitionIdsAllowedFilter) .execute(context); return new FilterConnectionTargetDefinitions(edgeId, allowedTargetDefinitions).execute(context); }