void (DifferentiateContext context, String usageKind, Iterable<JvmNodeReferenceID> usageOwners, Function<? super JvmNodeReferenceID, ? extends Usage> usageFactory, @Nullable Predicate<Node<?, ?>> constraint) { for (JvmNodeReferenceID id : usageOwners) { if (constraint != null) { context.affectUsage(usageFactory.apply(id), constraint); } else { context.affectUsage(usageFactory.apply(id)); } debug("Affect ", usageKind, " usage referenced of class ", id.getNodeName()); } }