// 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 <D extends DynamicObject<D>> D newInstance(Class<D> type) {
//     return Instances.newInstance(type);
// }


import static com.github.rschmitt.dynamicobject.DynamicObject.deserialize;
import static com.github.rschmitt.dynamicobject.DynamicObject.newInstance;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import static java.util.stream.IntStream.range;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
package com.github.rschmitt.dynamicobject;




public class CollectionsTest {
    private static final Random Random = new Random();
    private static final Base64.Encoder Encoder = Base64.getEncoder();

    @BeforeEach
    public void setup() {
        DynamicObject.registerTag(ListSchema.class, "ls");
        DynamicObject.registerTag(MapSchema.class, "ms");
        DynamicObject.registerTag(SetSchema.class, "ss");
    }

    @AfterEach
    public void teardown() {
        DynamicObject.deregisterTag(ListSchema.class);
        DynamicObject.deregisterTag(MapSchema.class);
        DynamicObject.deregisterTag(SetSchema.class);
    }

    @Test
    public void listOfStrings() {
// 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 <D extends DynamicObject<D>> D newInstance(Class<D> type) {
//     return Instances.newInstance(type);
// }


// Path: src/test/java/com/github/rschmitt/dynamicobject/CollectionsTest.java
import static com.github.rschmitt.dynamicobject.DynamicObject.deserialize;
import static com.github.rschmitt.dynamicobject.DynamicObject.newInstance;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import static java.util.stream.IntStream.range;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

package com.github.rschmitt.dynamicobject;




public class CollectionsTest {
    private static final Random Random = new Random();
    private static final Base64.Encoder Encoder = Base64.getEncoder();

    @BeforeEach
    public void setup() {
        DynamicObject.registerTag(ListSchema.class, "ls");
        DynamicObject.registerTag(MapSchema.class, "ms");
        DynamicObject.registerTag(SetSchema.class, "ss");
    }

    @AfterEach
    public void teardown() {
        DynamicObject.deregisterTag(ListSchema.class);
        DynamicObject.deregisterTag(MapSchema.class);
        DynamicObject.deregisterTag(SetSchema.class);
    }

    @Test
    public void listOfStrings() {
        ListSchema listSchema = deserialize("{:strings [\"one\" \"two\" \"three\"]}", ListSchema.class);