@Test
void parse_AngleTypeVars() {

    t=testee.parse("a.b.c<T,U> |-> a<T,U>");
    assertEquals(
            t.check("bad names", x -> x.names().contains("a"))
            .check("arrow must be DIRECT", x -> x.conversionCoverage() == ConversionCoverage.DIRECT)
            .check("must have type var T", x -> x.typeVariables().contains("T"))
            .check("must have type var U", x -> x.typeVariables().contains("U"))
            .check("must have an a", x -> x.tsExpressionElements().get(0).value().equals("a"))
            .check("must have added the ts container <T,U>", x -> x.tsExpressionElements().get(1).value().equals("<T,U>"))
            .leftOrNull()
            , null
    );
    assertTrue(t.value().tsExpressionElements().get(1) instanceof TSMappedTypeContainer);
    TSMappedTypeContainer t2 = (TSMappedTypeContainer) t.value().tsExpressionElements().get(1);
    assertEquals(t2.expressions().size(),5);
    assertEquals(t2.expressions().get(0).value(),"<");
    assertEquals(t2.expressions().get(1), TSMappedTypeVarBuilder.of("T"));
    assertEquals(t2.expressions().get(2).value(),",");
    assertEquals(t2.expressions().get(3), TSMappedTypeVarBuilder.of("U"));
    assertEquals(t2.expressions().get(4).value(),">");
}