@Override
	public boolean equals(final Object obj) {
		if (!(obj instanceof FailureNode)) {
			return false;
		}

		final FailureNode other = (FailureNode) obj;
		if (!type.equals(other.type) || redundancy != other.redundancy || required != other.required
				|| failureRates != other.failureRates || cascadingFailures.size() != other.cascadingFailures.size()) {
			return false;
		}
		for (String k : cascadingFailures.keySet()) {
			if (!other.cascadingFailures.containsKey(k) || cascadingFailures.get(k) != other.cascadingFailures.get(k)) {
				return false;
			}
		}
		return true;
	}