@Override
	public boolean equals(Object obj) {
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof Tuple<?, ?>)) {
			return false;
		}
		Tuple<?, ?> other = (Tuple<?, ?>) obj;
		return equal(first, other.getFirst())
				&& equal(second, other.getSecond());
	}