@Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (!(obj instanceof Dependency)) {
      return false;
    }
    Dependency<?, ?> other = (Dependency<?, ?>) obj;
    if (depender == null) {
      if (other.depender != null) {
        return false;
      }
    } else if (!depender.equals(other.depender)) {
      return false;
    }
    if (dependsOn == null) {
      return other.dependsOn == null;
    } else
      return dependsOn.equals(other.dependsOn);
  }
Holds a dependency between one object and another. This class is used as an edge in the @link
{@link DependencyGraph}.

An example of a dependency is a Thread that is blocking on a lock, or a lock that is held by a
thread.
geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/Dependency.java