@Test
 public void testJoinInterface3() {
   Stamp bExact = StampFactory.exactNonNull(getType(B.class));
   Stamp i = StampFactory.declared(getType(I.class)); // not trusted
   Stamp join = join(i, bExact);
   Assert.assertEquals(bExact, join);
 }
 @Test
 public void testJoinInterface2() {
   Stamp bExact = StampFactory.exactNonNull(getType(B.class));
   Stamp i = StampFactory.declaredTrusted(getType(I.class));
   Stamp join = join(i, bExact);
   Assert.assertEquals(StampFactory.illegal(Kind.Object), join);
 }
 @Test
 public void testJoin8() {
   Stamp bExact = StampFactory.exactNonNull(getType(B.class));
   Stamp dExact = StampFactory.exact(getType(D.class));
   Stamp join = join(bExact, dExact);
   Assert.assertFalse(join.isLegal());
 }
 @Test
 public void testJoin6() {
   Stamp dExactNonNull = StampFactory.exactNonNull(getType(D.class));
   Stamp alwaysNull = StampFactory.alwaysNull();
   Stamp join = join(alwaysNull, dExactNonNull);
   Assert.assertFalse(join.isLegal());
   Assert.assertFalse(StampTool.isPointerNonNull(join));
   Assert.assertFalse(StampTool.isPointerAlwaysNull(join));
 }
 @Test
 public void testJoin4() {
   Stamp dExactNonNull = StampFactory.exactNonNull(getType(D.class));
   Stamp c = StampFactory.declared(getType(C.class));
   Assert.assertEquals(StampFactory.illegal(Kind.Object), join(c, dExactNonNull));
 }
 @Test
 public void testJoin2() {
   Stamp aExact = StampFactory.exactNonNull(getType(A.class));
   Stamp b = StampFactory.declared(getType(B.class));
   Assert.assertEquals(StampFactory.illegal(Kind.Object), join(aExact, b));
 }