/** * Adds an outgoing dependency to this node. * * @param destination * The destination of the dependency. * @param isAssumed * Whether the dependency is assumed or not. * @param origin * The origin of the destination. * @param originPolicy * The origin policy of the destination. */ public void addOutgoingDependency(final DependencyGraphNode<T> destination, final boolean isAssumed, final TraceInformation origin, final IOriginRetentionPolicy originPolicy) { synchronized (this) { final Map<Integer, WeightedBidirectionalDependencyGraphEdge<T>> relevantDependencies = // NOPMD(UseConcurrentHashMap) isAssumed ? this.assumedOutgoingDependencies : this.outgoingDependencies; // NOCS (inline ?) WeightedBidirectionalDependencyGraphEdge<T> e = relevantDependencies.get(destination.getId()); if (e == null) { e = new WeightedBidirectionalDependencyGraphEdge<T>(this, destination, origin, originPolicy); if (isAssumed) { e.setAssumed(); } relevantDependencies.put(destination.getId(), e); } else { originPolicy.handleOrigin(e, origin); } e.getTargetWeight().incrementAndGet(); } }