@Override
	public boolean equals(Object obj)
	{
		if (obj == null) return false;
		if (getClass() != obj.getClass()) return false;
		final Pair<F, S> other = (Pair<F, S>) obj;
		if (this.first != other.first && (this.first == null || !this.first.equals(other.first))) return false;
		if (this.second != other.second && (this.second == null || !this.second.equals(other.second))) return false;
		return true;
	}