@Override
	public boolean equals(final Object obj)
	{
		if (this == obj)
			return true;
		if (null == obj || getClass() != obj.getClass())
			return false;

		@SuppressWarnings("unchecked")
		final Pair<T> other = (Pair<T>) obj;

		if (!first.equals(other.first))
			return false;

		if (!second.equals(other.second))
			return false;

		return true;
	}