@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}
		TestSaveable other = (TestSaveable) obj;
		if (booleanValue != other.booleanValue) {
			return false;
		}
		if (byteValue != other.byteValue) {
			return false;
		}
		if (!Arrays.equals(byteValues, other.byteValues)) {
			return false;
		}
		if (Double.doubleToLongBits(doubleValue) != Double.doubleToLongBits(other.doubleValue)) {
			return false;
		}
		if (!Arrays.equals(doubleValues, other.doubleValues)) {
			return false;
		}
		if (!Arrays.equals(fields, other.fields)) {
			return false;
		}
		if (Float.floatToIntBits(floatValue) != Float.floatToIntBits(other.floatValue)) {
			return false;
		}
		if (!Arrays.equals(floatValues, other.floatValues)) {
			return false;
		}
		if (intValue != other.intValue) {
			return false;
		}
		if (!Arrays.equals(intValues, other.intValues)) {
			return false;
		}
		if (longValue != other.longValue) {
			return false;
		}
		if (!Arrays.equals(longValues, other.longValues)) {
			return false;
		}
		if (shortValue != other.shortValue) {
			return false;
		}
		if (!Arrays.equals(shortValues, other.shortValues)) {
			return false;
		}
		if (strValue == null) {
			if (other.strValue != null) {
				return false;
			}
		}
		else if (!strValue.equals(other.strValue)) {
			return false;
		}
		if (!Arrays.equals(strValues, other.strValues)) {
			return false;
		}
		return true;
	}
@see ghidra.util.Saveable#restore(ghidra.util.ObjectStorage)
Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/properties/TestSaveable.java