public static TypeBuilder<Schema> builder() {
    return new TypeBuilder<>(new SchemaCompletion(), new NameContext());
  }
@Test
  void mapObjectProp() {
    Map<String, Object> values = new HashMap<>();
    values.put("booleanKey", true);
    values.put("intKey", Integer.MAX_VALUE);
    values.put("longKey", Long.MAX_VALUE);
    values.put("floatKey", 1.0f);
    values.put("doubleKey", Double.MAX_VALUE);
    values.put("byteKey", new byte[] { 0x41, 0x42, 0x43 });
    values.put("stringKey", "abc");

    Schema s = SchemaBuilder.builder().intBuilder().prop("mapProp", values).endInt();

    // object properties
    assertTrue(s.getObjectProp("mapProp") instanceof Map);
    @SuppressWarnings("unchecked")
    Map<String, Object> valueMap = (Map<String, Object>) s.getObjectProp("mapProp");
    assertEquals(values.size(), valueMap.size());

    assertTrue(valueMap.get("booleanKey") instanceof Boolean);
    assertEquals(true, valueMap.get("booleanKey"));
    assertTrue(valueMap.get("intKey") instanceof Integer);
    assertEquals(Integer.MAX_VALUE, valueMap.get("intKey"));
    assertTrue(valueMap.get("longKey") instanceof Long);
    assertEquals(Long.MAX_VALUE, valueMap.get("longKey"));

    assertTrue(valueMap.get("floatKey") instanceof Float);
    assertEquals(1.0f, valueMap.get("floatKey"));
    assertTrue(valueMap.get("doubleKey") instanceof Double);
    assertEquals(Double.MAX_VALUE, valueMap.get("doubleKey"));

    assertTrue(valueMap.get("byteKey") instanceof byte[]);
    assertArrayEquals("ABC".getBytes(StandardCharsets.UTF_8), (byte[]) valueMap.get("byteKey"));
    assertTrue(valueMap.get("stringKey") instanceof String);
    assertEquals("abc", valueMap.get("stringKey"));
  }