class Edge implements Serializable, Comparable<Edge> {

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof Edge)) {
      return false;
    }
    Edge edge = (Edge) o;
    return Objects.equals(_tail, edge._tail) && Objects.equals(_head, edge._head);
  }

  public  Edge(NodeInterfacePair tail, NodeInterfacePair head);
  public  Edge(Interface tail, Interface head);

}