anchor.diff:        for (String t2 in nullPredicateEnumeration.keys) {
           String typeParameters = joinTypeParameters(
               nullPredicateEnumeration[t1], nullPredicateEnumeration[t2]);
  -        String expected = env.morebottom(
  -                toType(t1, typeParameters: typeParameters),
  -                toType(t2, typeParameters: typeParameters))
  -            ? t1
  -            : t2;
  -        testLower(t1, t2, expected, typeParameters: typeParameters);
  +        typeParserEnvironment.withTypeParameters(typeParameters, (_) {
  +          String expected =
  +              typeSchemaEnvironment.morebottom(parseType(t1), parseType(t2))
  +                  ? t1
  +                  : t2;
  +          checkLowerBound(
  +              type1: t1,
  +              type2: t2,
  +              lowerBound: expected,
  +              typeParameters: typeParameters);
  +        });
         }
       }
   
  
positive.code:       for (String t2 in objectPredicateEnumeration.keys) {
          String typeParameters = joinTypeParameters(
              objectPredicateEnumeration[t1], objectPredicateEnumeration[t2]);
          String expected = env.moretop(
                  toType(t1, typeParameters: typeParameters),
                  toType(t2, typeParameters: typeParameters))
              ? t1
              : t2;
          testUpper(t1, t2, expected, typeParameters: typeParameters);
        }
      }
  
  
negative.code:     // B C K
      // |X| |
      // D E L
      parseTestLibrary("""
        class A;
        class B implements A;
        class C implements A;
  