class ValueEdge {

  @Override
  public boolean equals(@Nullable Object obj) {
    if (this == obj) {
      return true;
    }
    if (!(obj instanceof ValueEdge)) {
      return false;
    }
    ValueEdge<?, ?> rhs = (ValueEdge<?, ?>) obj;
    return _source.equals(rhs._source) && _target.equals(rhs._target) && _value.equals(rhs._value);
  }

  public  ValueEdge(N source, N target, V value);

}