@Override
  public boolean isCanonical() {
    for (ThrowConstraint c : throwConstraints) {
      if (!c.isCanonical()) {
        return false;
      }
    }

    if (!entryKeys.isCanonical()) {
      return false;
    }

    if (returnKeys != null && !returnKeys.isCanonical()) {
      return false;
    }

    return super.isCanonical();
  }