@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null) return false;

		if (o instanceof ClassInfo other) {
			// NOTE: Do NOT consider the properties since contents of the map can point back to this instance
			//       or our containing resource, causing a cycle.
			if (access != other.getAccess()) return false;
			if (!name.equals(other.getName())) return false;
			if (!Objects.equals(superName, other.getSuperName())) return false;
			if (!interfaces.equals(other.getInterfaces())) return false;
			if (!Objects.equals(signature, other.getSignature())) return false;
			if (!Objects.equals(sourceFileName, other.getSourceFileName())) return false;
			if (!annotations.equals(other.getAnnotations())) return false;
			if (!typeAnnotations.equals(other.getTypeAnnotations())) return false;
			if (!Objects.equals(outerClassName, other.getOuterClassName())) return false;
			if (!Objects.equals(outerMethodName, other.getOuterMethodName())) return false;
			if (!Objects.equals(outerMethodDescriptor, other.getOuterMethodDescriptor())) return false;
			if (!innerClasses.equals(other.getInnerClasses())) return false;
			if (!fields.equals(other.getFields())) return false;
			return methods.equals(other.getMethods());
		}
		return false;
	}
Basic implementation of class info.

@author Matt Coley
@see BasicJvmClassInfo
@see BasicAndroidClassInfo
recaf-core/src/main/java/software/coley/recaf/info/BasicClassInfo.java