public void testUnregisteredClasses () throws IOException {
		final Data dataTCP = new Data();
		populateData(dataTCP, true);
		final Data dataUDP = new Data();
		populateData(dataUDP, false);

		final AtomicInteger receivedTCP = new AtomicInteger();
		final AtomicInteger receivedUDP = new AtomicInteger();

		final Server server = new Server(1024 * 32, 1024 * 16);
		server.getKryo().setRegistrationRequired(false);
		startEndPoint(server);
		server.bind(tcpPort, udpPort);
		server.addListener(new Listener() {
			public void connected (Connection connection) {
				connection.sendTCP(dataTCP);
				connection.sendUDP(dataUDP);
			}

			public void received (Connection connection, Object object) {
				if (object instanceof Data) {
					Data data = (Data)object;
					if (data.isTCP) {
						if (!data.equals(dataTCP)) fail();
						receivedTCP.incrementAndGet();
					} else {
						if (!data.equals(dataUDP)) fail();
						receivedUDP.incrementAndGet();
					}
				}
			}
		});

		// ----

		final Client client = new Client(1024 * 32, 1024 * 16);
		client.getKryo().setRegistrationRequired(false);
		startEndPoint(client);
		client.addListener(new Listener() {
			public void received (Connection connection, Object object) {
				if (object instanceof Data) {
					Data data = (Data)object;
					if (data.isTCP) {
						if (!data.equals(dataTCP)) fail();
						receivedTCP.incrementAndGet();
						connection.sendTCP(data);
					} else {
						if (!data.equals(dataUDP)) fail();
						receivedUDP.incrementAndGet();
						connection.sendUDP(data);
					}
				}
			}
		});

		client.connect(5000, host, tcpPort, udpPort);

		waitForThreads(5000);

		assertEquals(2, receivedTCP.intValue());
		assertEquals(2, receivedUDP.intValue());
	}