@Override
  public boolean equals(Object other) {
    if (other == null
        || !(other instanceof StreamDiscretizer)
        || (other instanceof GroupedStreamDiscretizer)) {
      return false;
    } else {
      try {
        @SuppressWarnings("unchecked")
        StreamDiscretizer<IN> otherDiscretizer = (StreamDiscretizer<IN>) other;

        return triggerPolicy.equals(otherDiscretizer.triggerPolicy)
            && evictionPolicy.equals(otherDiscretizer.evictionPolicy);

      } catch (ClassCastException e) {
        return false;
      }
    }
  }