class HopRow implements Serializable {

  @Override public boolean equals( Object obj ) {
    if (!(obj instanceof HopRow )) {
      return false;
    }
    if (this == obj) {
      return true;
    }
    HopRow otherHopRow = (HopRow) obj;

    Object[] thisRow = row;
    Object[] otherRow = otherHopRow.getRow();
    if (thisRow==null && otherRow==null) {
      return true;
    }
    if ( (thisRow==null && otherRow!=null) || (thisRow!=null && otherRow==null)) {
      return false;
    }
    if (thisRow.length!=otherRow.length) {
      return false;
    }
    for (int i=0;i<thisRow.length;i++) {
      Object thisValue = thisRow[i];
      Object otherValue = otherRow[i];
      if ((thisValue==null && otherValue!=null ) || (thisValue!=null && otherValue==null)) {
        return false;
      }
      if (thisValue!=null && otherValue!=null && !thisValue.equals( otherValue )) {
        return false;
      }
    }
    return true;
  }

  public  HopRow();
  public  HopRow( Object[] row );

}