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

    final UnorderedPair other = (UnorderedPair)obj;
    if (Comparing.equal(other.first, first) && Comparing.equal(other.second, second)) return true;
    if (Comparing.equal(other.first, second) && Comparing.equal(other.second, first)) return true;
    return false;
  }
@Override
  public boolean equals(Object obj)