@Test
public void testSet()
{

   // String
   assertEquals("bar", modelObject().set("foo", "bar").get("foo", ModelString.class).getValue());
   // Number
   assertEquals(3, modelObject().set("foo", 3).get("foo", ModelNumber.class).getInt());
   assertEquals(3L, modelObject().set("foo", 3).get("foo", ModelNumber.class).getLong());
   assertEquals(3.14159265, modelObject().set("foo", 3.14159265).get("foo", ModelNumber.class).getDouble(), 0);
   assertEquals(BigInteger.valueOf(3), modelObject().set("foo", new BigInteger("3")).get("foo", ModelNumber.class).getBigInteger());
   assertEquals(BigDecimal.valueOf(3.14159265), modelObject().set("foo", new BigDecimal("3.14159265")).get("foo", ModelNumber.class).getBigDecimal());
   // Boolean
   assertTrue(modelObject().set("foo", true).get("foo", ModelBoolean.class).getValue());
   assertFalse(modelObject().set("foo", false).get("foo", ModelBoolean.class).getValue());
   // Reference
   assertEquals(PathAddress.pathAddress("foo", "bar"), modelObject().set("foo", PathAddress.pathAddress("foo", "bar")).get("foo", ModelReference.class).getValue());
}