// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static <T> T deserialize(String edn, Class<T> type) {
//     return EdnSerialization.deserialize(edn, type);
// }
// 
// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static String serialize(Object o) {
//     return EdnSerialization.serialize(o);
// }
// 
// Path: src/test/java/com/github/rschmitt/dynamicobject/TestUtils.java
// public static void assertEquivalent(String expected, String actual) {
//     assertEquals(genericRead(expected), genericRead(actual));
// }


import static com.github.rschmitt.dynamicobject.DynamicObject.deserialize;
import static com.github.rschmitt.dynamicobject.DynamicObject.serialize;
import static com.github.rschmitt.dynamicobject.TestUtils.assertEquivalent;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
    }

    @Test
    public void unboxedBuilders() {
        Unboxed unboxed = DynamicObject.newInstance(Unboxed.class)
                .i(4)
                .d(3.14)
                .f((float) 3.14)
                .lng(1234567890L)
                .shrt((short) 4)
                .bool(true)
                .c('\n')
                .b((byte)127);

        assertEquals(Unboxed, unboxed);
    }

    @Test
    public void unboxedNullBuilders() {
        String edn = "{:b nil, :c nil, :bool nil, :shrt nil, :lng nil, :f nil, :d nil, :i nil}";
        Boxed boxed = DynamicObject.newInstance(Boxed.class)
                .i(null)
                .d(null)
                .f(null)
                .lng(null)
                .shrt(null)
                .bool(null)
                .c(null)
                .b(null);

// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static <T> T deserialize(String edn, Class<T> type) {
//     return EdnSerialization.deserialize(edn, type);
// }
// 
// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static String serialize(Object o) {
//     return EdnSerialization.serialize(o);
// }
// 
// Path: src/test/java/com/github/rschmitt/dynamicobject/TestUtils.java
// public static void assertEquivalent(String expected, String actual) {
//     assertEquals(genericRead(expected), genericRead(actual));
// }


// Path: src/test/java/com/github/rschmitt/dynamicobject/PrimitiveTest.java
import static com.github.rschmitt.dynamicobject.DynamicObject.deserialize;
import static com.github.rschmitt.dynamicobject.DynamicObject.serialize;
import static com.github.rschmitt.dynamicobject.TestUtils.assertEquivalent;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;

    }

    @Test
    public void unboxedBuilders() {
        Unboxed unboxed = DynamicObject.newInstance(Unboxed.class)
                .i(4)
                .d(3.14)
                .f((float) 3.14)
                .lng(1234567890L)
                .shrt((short) 4)
                .bool(true)
                .c('\n')
                .b((byte)127);

        assertEquals(Unboxed, unboxed);
    }

    @Test
    public void unboxedNullBuilders() {
        String edn = "{:b nil, :c nil, :bool nil, :shrt nil, :lng nil, :f nil, :d nil, :i nil}";
        Boxed boxed = DynamicObject.newInstance(Boxed.class)
                .i(null)
                .d(null)
                .f(null)
                .lng(null)
                .shrt(null)
                .bool(null)
                .c(null)
                .b(null);

        assertEquals(boxed, deserialize(edn, Boxed.class));