@Override public boolean equals(Object obj){
  if (this == obj) {
    return true;
  }
  if ((null == obj) || (getClass() != obj.getClass())) {
    return false;
  }
  final ECMInfo other=(ECMInfo)obj;
  return Objects.equals(owner,other.owner) && Objects.equals(pos,other.pos) && (strength == other.strength)&& (angelStrength == other.angelStrength)&& (eccmStrength == other.eccmStrength)&& (angelECCMStrength == other.angelECCMStrength)&& (isECMNova == other.isECMNova)&& (range == other.range);
}

@ Override public boolean equals ( Object obj ) { if ( this == obj ) { return true ; } if ( ( null == obj ) || ( getClass ( ) != obj . getClass ( ) ) ) { return false ; } final ECMInfo other = ( ECMInfo ) obj ; return Objects . equals ( owner , other . owner ) && Objects . equals ( pos , other . pos ) && ( strength == other . strength ) && ( angelStrength == other . angelStrength ) && ( eccmStrength == other . eccmStrength ) && ( angelECCMStrength == other . angelECCMStrength ) && ( isECMNova == other . isECMNova ) && ( range == other . range ) ; }
equality is based on whether position , owner , range and all strengths match .
