	@Test
	public void testSerializerWrite() {

		MethodNode methodNode = new MethodNode(
			Opcodes.ACC_PUBLIC, "name", "()V", null, null);

		MethodNodeGenerator methodNodeGenerator = new MethodNodeGenerator(
			methodNode);

		InsnList insnList = methodNode.instructions;

		for (Type type : _types) {
			IntrabandProxyUtil.serializerWrite(methodNodeGenerator, type);

			AbstractInsnNode abstractInsnNode = insnList.getLast();

			Assert.assertTrue(abstractInsnNode instanceof MethodInsnNode);

			MethodInsnNode methodInsnNode = (MethodInsnNode)abstractInsnNode;

			Assert.assertEquals(
				Opcodes.INVOKEVIRTUAL, abstractInsnNode.getOpcode());
			Assert.assertEquals(
				Type.getInternalName(Serializer.class), methodInsnNode.owner);

			if (type.getSort() <= Type.DOUBLE) {
				String name = TextFormatter.format(
					type.getClassName(), TextFormatter.G);

				Assert.assertEquals("write".concat(name), methodInsnNode.name);
				Assert.assertEquals(
					Type.getMethodDescriptor(Type.VOID_TYPE, type),
					methodInsnNode.desc);
			}
			else if (type.equals(Type.getType(String.class))) {
				Assert.assertEquals("writeString", methodInsnNode.name);
				Assert.assertEquals(
					Type.getMethodDescriptor(
						Type.VOID_TYPE, Type.getType(String.class)),
					methodInsnNode.desc);
			}
			else {
				Assert.assertEquals("writeObject", methodInsnNode.name);
				Assert.assertEquals(
					Type.getMethodDescriptor(
						Type.VOID_TYPE, Type.getType(Serializable.class)),
					methodInsnNode.desc);
			}
		}
	}