@Override
    public @NotNull TypeConstraint meet(@NotNull TypeConstraint other) {
      if (this.isSuperConstraintOf(other)) return other;
      if (other.isSuperConstraintOf(this)) return this;
      if (!(other instanceof Constrained right)) return BOTTOM;

      Constrained result = this;
      for (Exact type : right.myInstanceOf) {
        result = result.withInstanceofValue(type);
        if (result == null) return BOTTOM;
      }
      for (Exact type : right.myNotInstanceOf) {
        result = result.withNotInstanceofValue(type);
        if (result == null) return BOTTOM;
      }
      return result;
    }
@Override
    public @NotNull TypeConstraint meet(@NotNull TypeConstraint other)