@Test
 public void testJoin1() {
   Stamp aNonNull = StampFactory.declaredNonNull(getType(A.class));
   Stamp b = StampFactory.declared(getType(B.class));
   Stamp bNonNull = StampFactory.declaredNonNull(getType(B.class));
   Assert.assertEquals(bNonNull, join(aNonNull, b));
 }
 @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 testJoin7() {
   Stamp aExact = StampFactory.exact(getType(A.class));
   Stamp e = StampFactory.declared(getType(E.class));
   Stamp join = join(aExact, e);
   Assert.assertTrue(StampTool.isPointerAlwaysNull(join));
   Assert.assertNull(StampTool.typeOrNull(join));
   Assert.assertFalse(StampTool.isExactType(join));
 }
 @Test
 public void testJoin5() {
   Stamp dExact = StampFactory.exact(getType(D.class));
   Stamp c = StampFactory.declared(getType(C.class));
   Stamp join = join(c, dExact);
   Assert.assertTrue(StampTool.isPointerAlwaysNull(join));
   Assert.assertNull(StampTool.typeOrNull(join));
   Assert.assertFalse(StampTool.isExactType(join));
 }
 private ParameterNode[] createParameters(GraphKit kit, Class<?>[] args) {
   ParameterNode[] params = new ParameterNode[args.length];
   ResolvedJavaType accessingClass = providers.getMetaAccess().lookupJavaType(getClass());
   for (int i = 0; i < args.length; i++) {
     ResolvedJavaType type =
         providers.getMetaAccess().lookupJavaType(args[i]).resolve(accessingClass);
     Stamp stamp;
     if (type.getJavaKind().getStackKind() == JavaKind.Object) {
       stamp = StampFactory.declared(type);
     } else {
       stamp = StampFactory.forKind(type.getJavaKind());
     }
     ParameterNode param = kit.unique(new ParameterNode(i, stamp));
     params[i] = param;
   }
   return params;
 }
 @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 testJoin3() {
   Stamp d = StampFactory.declared(getType(D.class));
   Stamp c = StampFactory.declared(getType(C.class));
   Assert.assertTrue(StampTool.isPointerAlwaysNull(join(c, d)));
 }
 @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));
 }
 @Test
 public void testJoin0() {
   Stamp a = StampFactory.declared(getType(A.class));
   Stamp b = StampFactory.declared(getType(B.class));
   Assert.assertEquals(b, join(a, b));
 }
 @Test
 public void testJoinInterface0() {
   Stamp a = StampFactory.declared(getType(A.class));
   Stamp i = StampFactory.declaredTrusted(getType(I.class));
   Assert.assertNotSame(StampFactory.illegal(Kind.Object), join(a, i));
 }