protected void initializeClonedLayout(AbstractVisualGraphLayout<V, E> newLayout) {

		AbstractVisualGraphLayout<V, E> originalLayout = this;
		VisualGraph<V, E> originalGraph = getVisualGraph();
		Collection<V> vertices = originalGraph.getVertices();
		for (V v : vertices) {
			Point2D location = originalLayout.apply(v);
			newLayout.setLocation(v, location);
		}

		Collection<E> edges = originalGraph.getEdges();
		Map<E, List<Point2D>> edgesToBends =
			edges.stream().collect(Collectors.toMap(e -> e, e -> e.getArticulationPoints()));

		VisualGraph<V, E> newGraph = newLayout.getVisualGraph();
		Collection<E> newEdges = newGraph.getEdges();
		for (E e : newEdges) {

			List<Point2D> bends = edgesToBends.get(e);
			if (bends == null) {
				// New edge is not in the old graph.  This can happen if the old graph has
				// grouped vertices and some edges have been removed.
				continue;
			}

			// clone the points too so the graphs don't step on each other
			List<Point2D> newBends = new ArrayList<>();
			for (Point2D p : bends) {
				newBends.add((Point2D) p.clone());
			}

			e.setArticulationPoints(newBends);
		}

		newLayout.layoutInitialized = true;
	}
Takes the given layout and copies the layout information this layout into that layout

@param newLayout the new layout to update
Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/layout/AbstractVisualGraphLayout.java