public boolean isEquivalent(PcodeInjectLibrary obj) {
		if (getClass() != obj.getClass()) {
			return false;
		}
		// Cannot compare uniqueBase as one side may not have parsed p-code
//		if (uniqueBase != op2.uniqueBase) {
//			return false;
//		}
		if (callFixupMap.size() != obj.callFixupMap.size()) {
			return false;
		}
		for (Entry<String, InjectPayload> entry : callFixupMap.entrySet()) {
			InjectPayload op2payload = obj.callFixupMap.get(entry.getKey());
			if (!entry.getValue().isEquivalent(op2payload)) {
				return false;
			}
		}
		if (callMechFixupMap.size() != obj.callMechFixupMap.size()) {
			return false;
		}
		for (Entry<String, InjectPayload> entry : callMechFixupMap.entrySet()) {
			InjectPayload op2payload = obj.callMechFixupMap.get(entry.getKey());
			if (!entry.getValue().isEquivalent(op2payload)) {
				return false;
			}
		}
		if (callOtherFixupMap.size() != obj.callOtherFixupMap.size()) {
			return false;
		}
		for (Entry<String, InjectPayload> entry : callOtherFixupMap.entrySet()) {
			InjectPayload op2payload = obj.callOtherFixupMap.get(entry.getKey());
			if (entry.getValue() != null && op2payload != null) {
				if (!entry.getValue().isEquivalent(op2payload)) {
					return false;
				}
			}
			else if (entry.getValue() != null || op2payload != null) {
				return false;
			}
		}
		if (callOtherOverride != null && obj.callOtherOverride != null) {
			if (callOtherOverride.length != obj.callOtherOverride.length) {
				return false;
			}
			for (int i = 0; i < callOtherOverride.length; ++i) {
				if (!callOtherOverride[i].isEquivalent(obj.callOtherOverride[i])) {
					return false;
				}
			}
		}
		else if (callOtherOverride == null && obj.callOtherOverride == null) {
			// continue
		}
		else {
			return false;
		}

		if (exePcodeMap.size() != obj.exePcodeMap.size()) {
			return false;
		}
		for (Entry<String, InjectPayload> entry : exePcodeMap.entrySet()) {
			InjectPayload op2payload = obj.exePcodeMap.get(entry.getKey());
			if (!entry.getValue().isEquivalent(op2payload)) {
				return false;
			}
		}
		if (programPayload != null && obj.programPayload != null) {
			if (programPayload.length != obj.programPayload.length) {
				return false;
			}
			for (int i = 0; i < programPayload.length; ++i) {
				if (!programPayload[i].isEquivalent(obj.programPayload[i])) {
					return false;
				}
			}
		}
		else if (programPayload == null && obj.programPayload == null) {
			// continue
		}
		else {
			return false;
		}
		return true;
	}
Compare that this and the other library contain all equivalent payloads
@param obj is the other library
@return true if all payloads are equivalent
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/PcodeInjectLibrary.java