assertEquals("a", pair.getHead());
assertEquals("b", pair.getNext().getHead());
assertNull(pair.getNext().getNext());
OID oid = contact.getOID();
assertEquals(1, oid.getCount());
assertEquals("123", oid.getValue(0));
assertEquals("Contact", contact.getClassName());
assertEquals("update", contact.getEventName());
assertEquals(12345, contact.getVersion());
assertEquals(24, contact.getValueCount());
assertEquals("Java", contact.getValue("firstName"));
assertEquals("Kava", contact.getValue("lastName"));
assertNull(contact.getValue("null"));
assertSame(contact, contact.getValue("self"));
checkEquals(Primitive.ONE_INTEGER, (Number)contact.getValue("integer"));
checkEquals(Primitive.createLong(2), (Number)contact.getValue("long"));
checkEquals(Primitive.createFloat(0.625f), (Number)contact.getValue("float"));
checkEquals(Primitive.createDouble(1.625), (Number)contact.getValue("double"));
checkEquals(new BigDecimal("1.2345"), (Number)contact.getValue("decimal"));
assertEquals(new Timestamp(12345), contact.getValue("timestamp"));
assertEquals(Boolean.TRUE, contact.getValue("boolean"));
assertEquals(new Binary(new byte[]{1, 2, 3, 4, 5}), contact.getValue("binary"));
assertEquals(new Binary(new byte[]{1, 2, 3, 4, 5, 6, 7}), contact.getValue("binary2"));
assertEquals(new Binary(new byte[]{1, 2}), contact.getValue("binary3"));
assertEquals("sym", ((Symbol)contact.getValue("symbol")).getName());
assertSame(Symbol.define("sym"), contact.getValue("symbol"));
Pair pairA = (Pair)contact.getValue("pair");
assertEquals("A", pairA.getHead());
Pair pairB = pairA.getNext();
assertEquals("B", pairB.getHead());
assertNull(pairB.getTail());
char[] cvec = (char[])contact.getValue("cvector");
assertEquals(3, cvec.length);
assertEquals('a', cvec[0]);
assertEquals('b', cvec[1]);
assertEquals('c', cvec[2]);
byte[] bvec = (byte[])contact.getValue("bvector");
assertEquals(3, bvec.length);
assertEquals(0, bvec[0]);
assertEquals((byte)0xAB, bvec[1]);
assertEquals(0x12, bvec[2]);
Object[] svec = (String[])contact.getValue("svector");
assertEquals(3, svec.length);
assertEquals("a", svec[0]);
assertEquals("b", svec[1]);
assertEquals("c", svec[2]);
Object[] vec = (Object[])contact.getValue("vector");
assertEquals(3, vec.length);
assertEquals("a", vec[0]);
assertEquals("b", vec[1]);
assertEquals("c", vec[2]);
PCodeFunction fun = (PCodeFunction)contact.getValue("function");
assertEquals(3, fun.code.length);
assertEquals(0, fun.code[0]);
assertEquals(1, fun.code[1]);
assertEquals(2, fun.code[2]);
assertEquals(1, fun.constants.length);
assertEquals("abc", fun.constants[0]);
PCodeMacro mac = (PCodeMacro)contact.getValue("macro");
assertEquals(3, mac.code.length);
assertEquals(3, mac.code[0]);
assertEquals(4, mac.code[1]);
assertEquals(5, mac.code[2]);
assertEquals(1, mac.constants.length);
assertEquals("cde", mac.constants[0]);
PrivilegeSet privilegeSet = (PrivilegeSet)contact.getValue("privilegeSet");
assertTrue(privilegeSet.contains(Repository.getMetadata().getPrimitivePrivilege("updateContact")));
assertTrue(privilegeSet.contains(Repository.getMetadata().getPrimitivePrivilege("WorkflowManage")));
assertFalse(privilegeSet.contains(Repository.getMetadata().getPrimitivePrivilege("createContact")));
List addressList = (List)contact.getValue("addresses");
assertEquals(2, addressList.size());
TransferObject addr1 = (TransferObject)addressList.get(0);
oid = addr1.getOID();
assertEquals(1, oid.getCount());
assertEquals("456", oid.getValue(0));
assertEquals("Address", addr1.getClassName());
assertEquals("update", addr1.getEventName());
assertEquals(0, addr1.getVersion());
assertEquals("Canada", addr1.getValue("country"));