private void CopyVertexAttributes(DirectedGraph copy) {
		AttributeManager<Vertex> attm = this.vertexAttributes;
		AttributeManager<Vertex> copyManager = copy.vertexAttributes();
		String[] names = attm.getAttributeNames();
		List<Attribute<Vertex>> attrs = new ArrayList<>();

		for (String name : names) {
			attrs.add(attm.getAttribute(name));
		}
		for (int i = 0; i < names.length; i++) {
			Attribute<Vertex> attribute = attrs.get(i);

			if (attribute instanceof DoubleAttribute) {
				DoubleAttribute<Vertex> dattr = (DoubleAttribute<Vertex>) attribute;
				DoubleAttribute<Vertex> dattrCopy =
					(DoubleAttribute<Vertex>) copyManager.createAttribute(names[i],
						AttributeManager.DOUBLE_TYPE);
				GraphIterator<Vertex> iter = this.vertexIterator();
				while (iter.hasNext()) {
					Vertex v = iter.next();
					try {
						dattrCopy.setValue(v, dattr.getValue(v));
					}
					catch (NoValueException exc) {
						//do nothing
					}
				}
			}
			else if (attribute instanceof IntegerAttribute) {
				IntegerAttribute<Vertex> dattr = (IntegerAttribute<Vertex>) attribute;
				IntegerAttribute<Vertex> dattrCopy =
					(IntegerAttribute<Vertex>) copyManager.createAttribute(names[i],
						AttributeManager.INTEGER_TYPE);
				GraphIterator<Vertex> iter = this.vertexIterator();
				while (iter.hasNext()) {
					Vertex v = iter.next();
					try {
						dattrCopy.setValue(v, dattr.getValue(v));
					}
					catch (NoValueException exc) {
						//do nothing
					}
				}
			}
			else if (attribute instanceof LongAttribute) {
				LongAttribute<Vertex> dattr = (LongAttribute<Vertex>) attribute;
				LongAttribute<Vertex> dattrCopy =
					(LongAttribute<Vertex>) copyManager.createAttribute(names[i],
						AttributeManager.LONG_TYPE);
				GraphIterator<Vertex> iter = this.vertexIterator();
				while (iter.hasNext()) {
					Vertex v = iter.next();
					try {
						dattrCopy.setValue(v, dattr.getValue(v));
					}
					catch (NoValueException exc) {
						//do nothing
					}
				}
			}
			else if (attribute instanceof ObjectAttribute) {
				ObjectAttribute<Vertex> dattr = (ObjectAttribute<Vertex>) attribute;
				ObjectAttribute<Vertex> dattrCopy =
					(ObjectAttribute<Vertex>) copyManager.createAttribute(names[i],
						AttributeManager.OBJECT_TYPE);
				GraphIterator<Vertex> iter = this.vertexIterator();
				while (iter.hasNext()) {
					Vertex v = iter.next();
					dattrCopy.setValue(v, dattr.getValue(v));
				}
			}
			else if (attribute instanceof StringAttribute) {
				StringAttribute<Vertex> dattr = (StringAttribute<Vertex>) attribute;
				StringAttribute<Vertex> dattrCopy =
					(StringAttribute<Vertex>) copyManager.createAttribute(names[i],
						AttributeManager.STRING_TYPE);
				GraphIterator<Vertex> iter = this.vertexIterator();
				while (iter.hasNext()) {
					Vertex 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