@Override public boolean equals(Object otherRules){
  if (this == otherRules) {
    return true;
  }
  if (otherRules instanceof ZoneRules) {
    ZoneRules other=(ZoneRules)otherRules;
    return Arrays.equals(standardTransitions,other.standardTransitions) && Arrays.equals(standardOffsets,other.standardOffsets) && Arrays.equals(savingsInstantTransitions,other.savingsInstantTransitions)&& Arrays.equals(wallOffsets,other.wallOffsets)&& Arrays.equals(lastRules,other.lastRules);
  }
  return false;
}

@ Override public boolean equals ( Object otherRules ) { if ( this == otherRules ) { return true ; } if ( otherRules instanceof ZoneRules ) { ZoneRules other = ( ZoneRules ) otherRules ; return Arrays . equals ( standardTransitions , other . standardTransitions ) && Arrays . equals ( standardOffsets , other . standardOffsets ) && Arrays . equals ( savingsInstantTransitions , other . savingsInstantTransitions ) && Arrays . equals ( wallOffsets , other . wallOffsets ) && Arrays . equals ( lastRules , other . lastRules ) ; } return false ; }
checks if this set of rules equals another . < p > two rule sets are equal if they will always result in the same output for any given input instant or local date - time . rules from two different groups may return false even if they are in fact the same . < p > this definition should result in implementations comparing their entire state .
