@Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final AutoContrast other = (AutoContrast) obj; if (!Arrays.equals(additionalParameters, other.additionalParameters)) { return false; } if (strategy == null) { if (other.strategy != null) { return false; } } else if (!strategy.equals(other.strategy)) { return false; } if (this.enabled != other.enabled) { return false; } if (getKeys() == null) { return other.getKeys() == null; } for (final Object key : getKeys()) { if (key instanceof String) { final String str = (String) key; if (!getValue(str).equals(other.getValue(str))) { return false; } } } return true; }