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

    EdgeLabel edgeLabel = (EdgeLabel) o;

    if (privateLabel != null
        ? !privateLabel.equals(edgeLabel.privateLabel)
        : edgeLabel.privateLabel != null) return false;
    if (publicLabel != null
        ? !publicLabel.equals(edgeLabel.publicLabel)
        : edgeLabel.publicLabel != null) return false;

    return true;
  }
 @Override
 public int hashCode() {
   int result = privateLabel != null ? privateLabel.hashCode() : 0;
   result = 31 * result + (publicLabel != null ? publicLabel.hashCode() : 0);
   return result;
 }