@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; GroundedGameUtilityFunction other = (GroundedGameUtilityFunction) obj; if (argument == null) { if (other.argument != null) return false; } else if (!argument.equals(other.argument)) return false; if (epsilon == null) { if (other.epsilon != null) return false; } else if (!epsilon.equals(other.epsilon)) return false; if (theory == null) { if (other.theory != null) return false; } else if (!theory.equals(other.theory)) return false; if (faction != other.faction) return false; return true; } }