@Test
	public void testImplicitConversions() {

		System.out.print(String.format("%12s\t", "from \\ to"));
		for (int i = 0; i < typesToTest.length; ++i) {
			System.out.print(String.format("%12s\t", names.get(i)));
		}
		Logger.log("");

		for (int i = 0; i < typesToTest.length; ++i) {
			System.out.print(String.format("%12s\t", names.get(i)));
			Type from = typesToTest[i];
			for (int j = 0; j < typesToTest.length; ++j) {
				boolean can = from.canConvertImplicit(typesToTest[j]);
				System.out.print(String.format("%12s\t", can ? "~" : ""));
			}
			Logger.log("");
		}

		for (int i = 0; i < typesToTest.length; ++i) {
			Assert.assertTrue("reflexive relation", typesToTest[i].canConvertImplicit(typesToTest[i]));
			for (int j = 0; j < typesToTest.length; ++j) {
				boolean ij = typesToTest[i].canConvertImplicit(typesToTest[j]);
				for (int k = 0; k < typesToTest.length; ++k) {
					boolean jk = typesToTest[i].canConvertImplicit(typesToTest[k]);
					boolean ik = typesToTest[i].canConvertImplicit(typesToTest[k]);
					if (ij && jk)
						Assert.assertTrue("transitive relation", ik);
				}
			}
		}
	}