private void CopyEdgeAttributes(DirectedGraph copy) {
		AttributeManager<Edge> attm = this.edgeAttributes;
		AttributeManager<Edge> copyManager = copy.edgeAttributes();
		String[] names = attm.getAttributeNames();
		List<Attribute<Edge>> attrs = new ArrayList<>(names.length);
		for (String name : names) {
			attrs.add(attm.getAttribute(name));
		}

		for (int i = 0; i < names.length; i++) {
			Attribute<Edge> attribute = attrs.get(i);
			if (attribute instanceof DoubleAttribute) {
				DoubleAttribute<Edge> dattr = (DoubleAttribute<Edge>) attribute;
				DoubleAttribute<Edge> dattrCopy =
					(DoubleAttribute<Edge>) copyManager.createAttribute(names[i],
						AttributeManager.DOUBLE_TYPE);
				GraphIterator<Edge> iter = this.edgeIterator();
				while (iter.hasNext()) {
					Edge v = iter.next();
					try {
						dattrCopy.setValue(v, dattr.getValue(v));
					}
					catch (NoValueException exc) {
						//do nothing
					}
				}
			}
			else if (attribute instanceof IntegerAttribute) {
				IntegerAttribute<Edge> dattr = (IntegerAttribute<Edge>) attribute;
				IntegerAttribute<Edge> dattrCopy =
					(IntegerAttribute<Edge>) copyManager.createAttribute(names[i],
						AttributeManager.INTEGER_TYPE);
				GraphIterator<Edge> iter = this.edgeIterator();
				while (iter.hasNext()) {
					Edge v = iter.next();
					try {
						dattrCopy.setValue(v, dattr.getValue(v));
					}
					catch (NoValueException exc) {
						//do nothing
					}
				}
			}
			else if (attribute instanceof LongAttribute) {
				LongAttribute<Edge> dattr = (LongAttribute<Edge>) attribute;
				LongAttribute<Edge> dattrCopy =
					(LongAttribute<Edge>) copyManager.createAttribute(names[i],
						AttributeManager.LONG_TYPE);
				GraphIterator<Edge> iter = this.edgeIterator();
				while (iter.hasNext()) {
					Edge v = iter.next();
					try {
						dattrCopy.setValue(v, dattr.getValue(v));
					}
					catch (NoValueException exc) {
						//do nothing
					}
				}
			}
			else if (attribute instanceof ObjectAttribute) {
				ObjectAttribute<Edge> dattr = (ObjectAttribute<Edge>) attribute;
				ObjectAttribute<Edge> dattrCopy =
					(ObjectAttribute<Edge>) copyManager.createAttribute(names[i],
						AttributeManager.OBJECT_TYPE);
				GraphIterator<Edge> iter = this.edgeIterator();
				while (iter.hasNext()) {
					Edge v = iter.next();
					dattrCopy.setValue(v, dattr.getValue(v));
				}
			}
			else if (attribute instanceof StringAttribute) {
				StringAttribute<Edge> dattr = (StringAttribute<Edge>) attribute;
				StringAttribute<Edge> dattrCopy =
					(StringAttribute<Edge>) copyManager.createAttribute(names[i],
						AttributeManager.STRING_TYPE);
				GraphIterator<Edge> iter = this.edgeIterator();
				while (iter.hasNext()) {
					Edge v = iter.next();
					dattrCopy.setValue(v, dattr.getValue(v));
				}
			}
		}
	}
Copies all attributes from the indicated directed graph to this one.
@param copy the directed graph to copy from.
Ghidra/Framework/Generic/src/main/java/ghidra/util/graph/DirectedGraph.java