@Override public boolean equals(final Object other){
  if (other == this) {
    return true;
  }
 else   if (other == null) {
    return false;
  }
 else   if (other.getClass() == Expression.class) {
    final Expression o=(Expression)other;
    if (matcher != null) {
      if ((o.matcher == null) || !matcher.equals(o.matcher)) {
        return false;
      }
    }
 else {
      if (o.matcher != null) {
        return false;
      }
    }
    if (normalized.length() > 0) {
      return normalized.equals(o.normalized);
    }
 else {
      return original.equals(o.original);
    }
  }
 else {
    return false;
  }
}

@ Override public boolean equals ( final Object other ) { if ( other == this ) { return true ; } else if ( other == null ) { return false ; } else if ( other . getClass ( ) == Expression . class ) { final Expression o = ( Expression ) other ; if ( matcher != null ) { if ( ( o . matcher == null ) || ! matcher . equals ( o . matcher ) ) { return false ; } } else { if ( o . matcher != null ) { return false ; } } if ( normalized . length ( ) > 0 ) { return normalized . equals ( o . normalized ) ; } else { return original . equals ( o . original ) ; } } else { return false ; } }
check for equality of two expression objects .
