List of usage examples for com.google.common.collect ImmutableBiMap inverse
public abstract ImmutableBiMap<V, K> inverse();
From source file:net.tsquery.data.hbase.IDMap.java
private static String getEqual(ImmutableBiMap<String, ID> map, ID id) { for (ID valueID : map.inverse().keySet()) { if (valueID.compareTo(id) == 0) { return map.inverse().get(valueID); }/*from www.j a v a 2s.c o m*/ } return null; }
From source file:org.fcrepo.kernel.impl.rdf.converters.PropertyConverter.java
/** * Get the JCR property name for an RDF predicate * * @param namespaceRegistry the namespace registry * @param predicate the predicate to map to a property name * @param namespaceMapping the namespace mapping * @return JCR property name for an RDF predicate * @throws RepositoryException if repository exception occurred *//*from www.ja va2 s . co m*/ public static String getPropertyNameFromPredicate(final NamespaceRegistry namespaceRegistry, final Resource predicate, final Map<String, String> namespaceMapping) throws RepositoryException { // reject if update request contains any fcr namespaces if (namespaceMapping != null && namespaceMapping.containsKey("fcr")) { throw new FedoraInvalidNamespaceException("Invalid fcr namespace properties " + predicate + "."); } final String rdfNamespace = predicate.getNameSpace(); // log warning if the user-supplied namespace doesn't match value from predicate.getNameSpace(), // e.g., if the Jena method returns "http://" for "http://myurl.org" (no terminating character). if (namespaceMapping != null && !namespaceMapping.containsValue(rdfNamespace)) { LOGGER.warn("The namespace of predicate: {} was possibly misinterpreted as: {}.", predicate, rdfNamespace); } final String rdfLocalname = predicate.getLocalName(); final String prefix; assert (namespaceRegistry != null); final String namespace = getJcrNamespaceForRDFNamespace(rdfNamespace); if (namespaceRegistry.isRegisteredUri(namespace)) { LOGGER.debug("Discovered namespace: {} in namespace registry.", namespace); prefix = namespaceRegistry.getPrefix(namespace); } else { LOGGER.debug("Didn't discover namespace: {} in namespace registry.", namespace); final ImmutableBiMap<String, String> nsMap = ImmutableBiMap.copyOf(namespaceMapping); if (nsMap.containsValue(namespace)) { LOGGER.debug("Discovered namespace: {} in namespace map: {}.", namespace, nsMap); prefix = nsMap.inverse().get(namespace); namespaceRegistry.registerNamespace(prefix, namespace); } else { prefix = namespaceRegistry.registerNamespace(namespace); } } final String propertyName = prefix + ":" + rdfLocalname; LOGGER.debug("Took RDF predicate {} and translated it to JCR property {}", namespace, propertyName); return propertyName; }
From source file:org.fcrepo.kernel.modeshape.rdf.converters.PropertyConverter.java
/** * Get the JCR property name for an RDF predicate * * @param namespaceRegistry the namespace registry * @param predicate the predicate to map to a property name * @param namespaceMapping the namespace mapping * @return JCR property name for an RDF predicate * @throws RepositoryException if repository exception occurred */// w w w .j a va2 s . c o m public static String getPropertyNameFromPredicate(final NamespaceRegistry namespaceRegistry, final Resource predicate, final Map<String, String> namespaceMapping) throws RepositoryException { // reject if update request contains any fcr namespaces if (namespaceMapping != null && namespaceMapping.containsKey("fcr")) { throw new FedoraInvalidNamespaceException("Invalid fcr namespace properties " + predicate + "."); } final String rdfNamespace = predicate.getNameSpace(); // log warning if the user-supplied namespace doesn't match value from predicate.getNameSpace(), // e.g., if the Jena method returns "http://" for "http://myurl.org" (no terminating character). if (namespaceMapping != null && namespaceMapping.size() > 0 && !namespaceMapping.containsValue(rdfNamespace)) { LOGGER.warn("The namespace of predicate: {} was possibly misinterpreted as: {}.", predicate, rdfNamespace); } final String rdfLocalname = predicate.getLocalName(); final String prefix; assert (namespaceRegistry != null); final String namespace = getJcrNamespaceForRDFNamespace(rdfNamespace); if (namespaceRegistry.isRegisteredUri(namespace)) { LOGGER.debug("Discovered namespace: {} in namespace registry.", namespace); prefix = namespaceRegistry.getPrefix(namespace); } else { LOGGER.debug("Didn't discover namespace: {} in namespace registry.", namespace); final ImmutableBiMap<String, String> nsMap = ImmutableBiMap.copyOf(namespaceMapping); if (nsMap.containsValue(namespace)) { LOGGER.debug("Discovered namespace: {} in namespace map: {}.", namespace, nsMap); prefix = nsMap.inverse().get(namespace); namespaceRegistry.registerNamespace(prefix, namespace); } else { prefix = namespaceRegistry.registerNamespace(namespace); } } final String propertyName = prefix + ":" + rdfLocalname; LOGGER.debug("Took RDF predicate {} and translated it to JCR property {}", namespace, propertyName); return propertyName; }
From source file:org.cspoker.client.common.gamestate.AbstractGameState.java
public final PlayerState getNextSeatedPlayerAfter(PlayerId startPlayer) { ImmutableBiMap<SeatId, PlayerId> seatMap = getSeatMap(); int maxNbPlayers = getTableConfiguration().getMaxNbPlayers(); SeatId currentSeat = seatMap.inverse().get(startPlayer); PlayerId currentPlayer;//from w w w . j a v a 2 s.c o m do { currentSeat = new SeatId((currentSeat.getId() + 1) % maxNbPlayers); currentPlayer = seatMap.get(currentSeat); } while (currentPlayer == null); if (currentPlayer.equals(startPlayer)) { return null; } return getPlayer(currentPlayer); }
From source file:com.facebook.buck.js.JsLibraryDescription.java
@Override public BuildRule createBuildRule(TargetGraph targetGraph, BuildRuleParams params, BuildRuleResolver resolver, CellPathResolver cellRoots, Arg args) throws NoSuchBuildTargetException { params.getBuildTarget().getBasePath(); // this params object is used as base for the JsLibrary build rule, but also for all dynamically // created JsFile rules. // For the JsLibrary case, we want to propagate flavors to library dependencies // For the JsFile case, we only want to depend on the worker, not on any libraries params = JsUtil.withWorkerDependencyOnly(params, resolver, args.worker); final WorkerTool worker = resolver.getRuleWithType(args.worker, WorkerTool.class); final SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(resolver); final SourcePathResolver sourcePathResolver = new SourcePathResolver(ruleFinder); final ImmutableBiMap<Either<SourcePath, Pair<SourcePath, String>>, Flavor> sourcesToFlavors = mapSourcesToFlavors( sourcePathResolver, args.srcs); final Optional<Either<SourcePath, Pair<SourcePath, String>>> file = JsFlavors .extractSourcePath(sourcesToFlavors.inverse(), params.getBuildTarget().getFlavors().stream()); if (file.isPresent()) { return params.getBuildTarget().getFlavors().contains(JsFlavors.RELEASE) ? createReleaseFileRule(params, resolver, args, worker) : createDevFileRule(params, ruleFinder, sourcePathResolver, args, file.get(), worker); } else {// w ww. j a v a 2s .com return new LibraryBuilder(targetGraph, resolver, params, sourcesToFlavors).setSources(args.srcs) .setLibraryDependencies(args.libs).build(worker); } }
From source file:com.facebook.buck.features.js.JsLibraryDescription.java
@Override public BuildRule createBuildRule(BuildRuleCreationContextWithTargetGraph context, BuildTarget buildTarget, BuildRuleParams params, JsLibraryDescriptionArg args) { ActionGraphBuilder graphBuilder = context.getActionGraphBuilder(); SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder); SourcePathResolver sourcePathResolver = DefaultSourcePathResolver.from(ruleFinder); ImmutableBiMap<Either<SourcePath, Pair<SourcePath, String>>, Flavor> sourcesToFlavors; try {// w w w .ja v a 2 s . c o m sourcesToFlavors = sourcesToFlavorsCache.get(args.getSrcs(), () -> mapSourcesToFlavors(sourcePathResolver, args.getSrcs())); } catch (ExecutionException e) { throw new RuntimeException(e); } Optional<Either<SourcePath, Pair<SourcePath, String>>> file = JsFlavors .extractSourcePath(sourcesToFlavors.inverse(), buildTarget.getFlavors().stream()); ProjectFilesystem projectFilesystem = context.getProjectFilesystem(); CellPathResolver cellRoots = context.getCellPathResolver(); BuildTarget workerTarget = args.getWorker(); WorkerTool worker = graphBuilder.getRuleWithType(workerTarget, WorkerTool.class); // this params object is used as base for the JsLibrary build rule, but also for all dynamically // created JsFile rules. // For the JsLibrary case, we want to propagate flavors to library dependencies // For the JsFile case, we only want to depend on the worker, not on any libraries Predicate<BuildTarget> isWorker = workerTarget::equals; Predicate<BuildTarget> extraDepsFilter = args.getExtraJson().map(StringWithMacros::getMacros) .map(RichStream::from).map(JsLibraryDescription::getMacroTargets) .map(macroTargets -> isWorker.or(macroTargets::contains)).orElse(isWorker); ImmutableSortedSet<BuildRule> workerAndMacrosExtraDeps = params.getExtraDeps().get().stream() .filter(x -> extraDepsFilter.test(x.getBuildTarget())) .collect(ImmutableSortedSet.toImmutableSortedSet(Ordering.natural())); BuildRuleParams baseParams = params.withoutDeclaredDeps().withExtraDeps(workerAndMacrosExtraDeps); if (file.isPresent()) { return buildTarget.getFlavors().contains(JsFlavors.RELEASE) ? createReleaseFileRule(buildTarget, projectFilesystem, baseParams, graphBuilder, cellRoots, args, worker) : createDevFileRule(buildTarget, projectFilesystem, baseParams, ruleFinder, sourcePathResolver, graphBuilder, cellRoots, args, file.get(), worker); } else if (buildTarget.getFlavors().contains(JsFlavors.LIBRARY_FILES)) { return new LibraryFilesBuilder(graphBuilder, buildTarget, baseParams, sourcesToFlavors) .setSources(args.getSrcs()).build(projectFilesystem, worker); } else { // We allow the `deps_query` to contain different kinds of build targets, but filter out // all targets that don't refer to a JsLibrary rule. // That prevents users from having to wrap every query into "kind(js_library, ...)". Stream<BuildTarget> queryDeps = args.getDepsQuery().map(Query::getResolvedQuery) .orElseGet(ImmutableSortedSet::of).stream() .filter(target -> JsUtil.isJsLibraryTarget(target, context.getTargetGraph())); Stream<BuildTarget> declaredDeps = args.getDeps().stream(); Stream<BuildTarget> deps = Stream.concat(declaredDeps, queryDeps); return new LibraryBuilder(context.getTargetGraph(), graphBuilder, buildTarget, baseParams) .setLibraryDependencies(deps).build(projectFilesystem, worker); } }
From source file:org.fcrepo.kernel.rdf.JcrRdfTools.java
/** * Get the JCR property name for an RDF predicate * * @param namespaceRegistry//from w w w.ja v a2 s . co m * @param rdfNamespace * @param rdfLocalname * @param namespaceMapping * @return * @throws RepositoryException */ private String getJcrNameForRdfNode(final NamespaceRegistry namespaceRegistry, final String rdfNamespace, final String rdfLocalname, final Map<String, String> namespaceMapping) throws RepositoryException { final String prefix; final String namespace = getJcrNamespaceForRDFNamespace(rdfNamespace); assert (namespaceRegistry != null); if (namespaceRegistry.isRegisteredUri(namespace)) { LOGGER.debug("Discovered namespace: {} in namespace registry.", namespace); prefix = namespaceRegistry.getPrefix(namespace); } else { LOGGER.debug("Didn't discover namespace: {} in namespace registry.", namespace); final ImmutableBiMap<String, String> nsMap = ImmutableBiMap.copyOf(namespaceMapping); if (nsMap.containsValue(namespace)) { LOGGER.debug("Discovered namespace: {} in namespace map: {}.", namespace, nsMap); prefix = nsMap.inverse().get(namespace); namespaceRegistry.registerNamespace(prefix, namespace); } else { prefix = namespaceRegistry.registerNamespace(namespace); } } final String propertyName = prefix + ":" + rdfLocalname; LOGGER.debug("Took RDF predicate {} and translated it to JCR property {}", namespace, propertyName); return propertyName; }
From source file:com.google.devtools.build.lib.rules.java.JavaImport.java
@Override public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException, RuleErrorException { ImmutableList<Artifact> srcJars = ImmutableList.of(); ImmutableList<Artifact> jars = collectJars(ruleContext); Artifact srcJar = ruleContext.getPrerequisiteArtifact("srcjar", Mode.TARGET); if (ruleContext.hasErrors()) { return null; }// w ww. jav a 2 s .co m ImmutableList<TransitiveInfoCollection> targets = ImmutableList.<TransitiveInfoCollection>builder() .addAll(ruleContext.getPrerequisites("deps", Mode.TARGET)) .addAll(ruleContext.getPrerequisites("exports", Mode.TARGET)).build(); final JavaCommon common = new JavaCommon(ruleContext, semantics, /*srcs=*/ImmutableList.<Artifact>of(), targets, targets, targets); semantics.checkRule(ruleContext, common); // No need for javac options - no compilation happening here. ImmutableBiMap.Builder<Artifact, Artifact> compilationToRuntimeJarMapBuilder = ImmutableBiMap.builder(); ImmutableList<Artifact> interfaceJars = processWithIjar(jars, ruleContext, compilationToRuntimeJarMapBuilder); JavaCompilationArtifacts javaArtifacts = collectJavaArtifacts(jars, interfaceJars); common.setJavaCompilationArtifacts(javaArtifacts); CppCompilationContext transitiveCppDeps = common.collectTransitiveCppDeps(); NestedSet<LinkerInput> transitiveJavaNativeLibraries = common.collectTransitiveJavaNativeLibraries(); boolean neverLink = JavaCommon.isNeverLink(ruleContext); JavaCompilationArgs javaCompilationArgs = common.collectJavaCompilationArgs(false, neverLink, false); JavaCompilationArgs recursiveJavaCompilationArgs = common.collectJavaCompilationArgs(true, neverLink, false); NestedSet<Artifact> transitiveJavaSourceJars = collectTransitiveJavaSourceJars(ruleContext, srcJar); if (srcJar != null) { srcJars = ImmutableList.of(srcJar); } // The "neverlink" attribute is transitive, so if it is enabled, we don't add any // runfiles from this target or its dependencies. Runfiles runfiles = neverLink ? Runfiles.EMPTY : new Runfiles.Builder(ruleContext.getWorkspaceName(), ruleContext.getConfiguration().legacyExternalRunfiles()) // add the jars to the runfiles .addArtifacts(javaArtifacts.getRuntimeJars()) .addTargets(targets, RunfilesProvider.DEFAULT_RUNFILES) .addRunfiles(ruleContext, RunfilesProvider.DEFAULT_RUNFILES) .addTargets(targets, JavaRunfilesProvider.TO_RUNFILES) .add(ruleContext, JavaRunfilesProvider.TO_RUNFILES).build(); CcLinkParamsStore ccLinkParamsStore = new CcLinkParamsStore() { @Override protected void collect(CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) { builder.addTransitiveTargets(common.targetsTreatedAsDeps(ClasspathType.BOTH), JavaCcLinkParamsProvider.TO_LINK_PARAMS, CcLinkParamsProvider.TO_LINK_PARAMS); } }; RuleConfiguredTargetBuilder ruleBuilder = new RuleConfiguredTargetBuilder(ruleContext); NestedSetBuilder<Artifact> filesBuilder = NestedSetBuilder.stableOrder(); filesBuilder.addAll(jars); ImmutableBiMap<Artifact, Artifact> compilationToRuntimeJarMap = compilationToRuntimeJarMapBuilder.build(); semantics.addProviders(ruleContext, common, ImmutableList.<String>of(), null /* classJar */, srcJar /* srcJar */, null /* genJar */, null /* gensrcJar */, compilationToRuntimeJarMap, filesBuilder, ruleBuilder); NestedSet<Artifact> filesToBuild = filesBuilder.build(); JavaSourceInfoProvider javaSourceInfoProvider = new JavaSourceInfoProvider.Builder().setJarFiles(jars) .setSourceJarsForJarFiles(srcJars).build(); JavaRuleOutputJarsProvider.Builder ruleOutputJarsProviderBuilder = JavaRuleOutputJarsProvider.builder(); for (Artifact jar : jars) { ruleOutputJarsProviderBuilder.addOutputJar(jar, compilationToRuntimeJarMap.inverse().get(jar), srcJar); } NestedSet<Artifact> proguardSpecs = new ProguardLibrary(ruleContext).collectProguardSpecs(); JavaRuleOutputJarsProvider ruleOutputJarsProvider = ruleOutputJarsProviderBuilder.build(); JavaSourceJarsProvider sourceJarsProvider = JavaSourceJarsProvider.create(transitiveJavaSourceJars, srcJars); JavaCompilationArgsProvider compilationArgsProvider = JavaCompilationArgsProvider .create(javaCompilationArgs, recursiveJavaCompilationArgs); JavaSkylarkApiProvider.Builder skylarkApiProvider = JavaSkylarkApiProvider.builder() .setRuleOutputJarsProvider(ruleOutputJarsProvider).setSourceJarsProvider(sourceJarsProvider) .setCompilationArgsProvider(compilationArgsProvider); common.addTransitiveInfoProviders(ruleBuilder, skylarkApiProvider, filesToBuild, null); return ruleBuilder.setFilesToBuild(filesToBuild) .addSkylarkTransitiveInfo(JavaSkylarkApiProvider.NAME, skylarkApiProvider.build()) .add(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider) .add(JavaRuntimeJarProvider.class, new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars())) .add(JavaNeverlinkInfoProvider.class, new JavaNeverlinkInfoProvider(neverLink)) .add(RunfilesProvider.class, RunfilesProvider.simple(runfiles)) .add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore)) .add(JavaCompilationArgsProvider.class, compilationArgsProvider) .add(JavaNativeLibraryProvider.class, new JavaNativeLibraryProvider(transitiveJavaNativeLibraries)) .add(CppCompilationContext.class, transitiveCppDeps) .add(JavaSourceInfoProvider.class, javaSourceInfoProvider) .add(JavaSourceJarsProvider.class, sourceJarsProvider) .add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs)) .addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveJavaSourceJars) .addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, proguardSpecs).build(); }
From source file:com.github.rinde.rinsim.central.arrays.ArraysSolverValidator.java
private static void validateCurrentSolutions(int v, int n, SolutionObject[] currentSolutions, int[] currentDestinations, Multimap<Integer, Integer> inventoriesMap, ImmutableBiMap<Integer, Integer> servicePairsMap) { checkArgument(currentSolutions.length == v, "The number of currentSolutions (%s) should equal the number of " + "vehicles (%s).", currentSolutions.length, v); for (int i = 0; i < currentSolutions.length; i++) { final List<Integer> route = ImmutableList.copyOf(Ints.asList(currentSolutions[i].route)); checkArgument(route.get(0) == 0, "First item in route should always be 0, it is %s.", route.get(0)); checkArgument(route.get(route.size() - 1) == n - 1, "Last item in route should always be depot (%s), it is %s.", n - 1, route.get(route.size() - 1)); if (currentDestinations[i] > 0) { // there is a current destination checkArgument(currentDestinations[i] == route.get(1), "The vehicle has a current destination (%s) but it is not the " + "first item in its route: %s.", currentDestinations[i], route); }/*from w ww.jav a 2 s. co m*/ final Collection<Integer> inventory = inventoriesMap.get(i); checkArgument(ImmutableSet.copyOf(route).containsAll(inventory), "The route should contain all locations in its inventory. Vehicle " + "%s, route: %s, inventory: %s.", i, route, inventory); for (int j = 1; j < route.size() - 1; j++) { final Integer item = route.get(j); final int freq = Collections.frequency(route, item); checkArgument(freq == 1, "Vehicle %s: each location should occur only once, found %s " + "instances of location %s. Route: %s.", i, freq, item, route); if (!inventoriesMap.containsEntry(i, item)) { // not in cargo, so the pair should appear in the route if (servicePairsMap.containsKey(item)) { checkArgument(route.contains(servicePairsMap.get(item)), "Couldn't find %s in regular mapping.", item); } else { checkArgument(route.contains(servicePairsMap.inverse().get(item)), "Couldn't find %s in inverse mapping.", item); } } } } }
From source file:org.sosy_lab.cpachecker.cfa.postprocessing.global.singleloop.CFASingleLoopTransformation.java
/** * All function call edges calling functions where the summary edge * successor, i.e. the node succeeding the function call predecessor in the * caller function, is now a successor of the artificial decision tree, need * to be fixed in that their summary edge must now point to a different * successor: The predecessor of the assignment edge assigning the program * counter value that leads to the old successor. * * @param pStartNode the start node of the new graph. * @param pNewSuccessorsToPC the successor nodes of program counter value * assume edges mapped to their respective program counter value. * @param pGlobalNewToOld the mapping of new control flow nodes to old control * flow nodes./*from w w w.ja v a 2 s .c om*/ * * @throws InterruptedException if a shutdown has been requested by the registered shutdown notifier. */ private void fixSummaryEdges(FunctionEntryNode pStartNode, ImmutableBiMap<Integer, CFANode> pNewSuccessorsToPC, Map<CFANode, CFANode> pGlobalNewToOld) throws InterruptedException { for (FunctionCallEdge fce : findEdges(FunctionCallEdge.class, pStartNode)) { FunctionEntryNode entryNode = fce.getSuccessor(); FunctionExitNode exitNode = entryNode.getExitNode(); FunctionSummaryEdge oldSummaryEdge = fce.getSummaryEdge(); CFANode oldSummarySuccessor = fce.getSummaryEdge().getSuccessor(); Integer pcValue = pNewSuccessorsToPC.inverse().get(oldSummarySuccessor); if (pcValue != null) { // Find the correct new successor for (CFANode potentialNewSummarySuccessor : CFAUtils.successorsOf(exitNode)) { if (potentialNewSummarySuccessor.getNumLeavingEdges() == 1) { CFAEdge potentialPCValueAssignmentEdge = potentialNewSummarySuccessor.getLeavingEdge(0); if (potentialPCValueAssignmentEdge instanceof ProgramCounterValueAssignmentEdge) { ProgramCounterValueAssignmentEdge programCounterValueAssignmentEdge = (ProgramCounterValueAssignmentEdge) potentialPCValueAssignmentEdge; if (programCounterValueAssignmentEdge.getProgramCounterValue() == pcValue) { FunctionSummaryEdge newSummaryEdge = (FunctionSummaryEdge) copyCFAEdgeWithNewNodes( oldSummaryEdge, oldSummaryEdge.getPredecessor(), potentialNewSummarySuccessor, pGlobalNewToOld); // Fix function summary statement edges for (CFunctionSummaryStatementEdge edge : CFAUtils .leavingEdges(oldSummaryEdge.getPredecessor()) .filter(CFunctionSummaryStatementEdge.class)) { if (edge.getPredecessor() != newSummaryEdge.getPredecessor() || edge.getSuccessor() != newSummaryEdge.getSuccessor()) { removeFromNodes(edge); if (exitNode.getNumEnteringEdges() > 0) { CFAEdge newEdge = copyCFAEdgeWithNewNodes(edge, newSummaryEdge.getPredecessor(), newSummaryEdge.getSuccessor(), pGlobalNewToOld); addToNodes(newEdge); } } } // Fix the function summary edge removeSummaryEdgeFromNodes(oldSummaryEdge); oldSummaryEdge = newSummaryEdge.getPredecessor().getLeavingSummaryEdge(); if (oldSummaryEdge != null) { removeSummaryEdgeFromNodes(oldSummaryEdge); } newSummaryEdge.getPredecessor().addLeavingSummaryEdge(newSummaryEdge); oldSummaryEdge = newSummaryEdge.getSuccessor().getEnteringSummaryEdge(); if (oldSummaryEdge != null) { removeSummaryEdgeFromNodes(oldSummaryEdge); } newSummaryEdge.getSuccessor().addEnteringSummaryEdge(newSummaryEdge); break; } } } } } } }