// Path: src/main/java/io/usethesource/criterion/api/JmhValueFactory.java
// public interface JmhValueFactory {
// 
//   static RuntimeException FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION =
//       new UnsupportedOperationException("Not yet implemented.");
// 
//   // default JmhSet set() {
//   // return setBuilder().done();
//   // }
// 
//   default JmhSet.Builder setBuilder() {
//     throw FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION;
//   }
// 
//   // default JmhMap map() {
//   // return mapBuilder().done();
//   // }
// 
//   default JmhMap.Builder mapBuilder() {
//     throw FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION;
//   }
// 
//   // default JmhSetMultimap setMulimap() {
//   // return setMultimapBuilder().done();
//   // }
// 
//   default JmhSetMultimap.Builder setMultimapBuilder() {
//     throw FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION;
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/impl/immutable/guava/ImmutableGuavaValueFactory.java
// public class ImmutableGuavaValueFactory implements JmhValueFactory {
// 
//   public ImmutableGuavaValueFactory() {
//   }
// 
//   @Override
//   public JmhSet.Builder setBuilder() {
//     return new ImmutableGuavaSetBuilder();
//   }
// 
//   @Override
//   public JmhMap.Builder mapBuilder() {
//     return new ImmutableGuavaMapBuilder();
//   }
// 
//   @Override
//   public JmhSetMultimap.Builder setMultimapBuilder() {
//     return new ImmutableGuavaSetMultimapBuilder();
//   }
// 
//   @Override
//   public String toString() {
//     return "VF_GUAVA_IMMUTABLE";
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/impl/persistent/paguro/PaguroValueFactory.java
// public class PaguroValueFactory implements JmhValueFactory {
// 
//   @Override
//   public JmhSet.Builder setBuilder() {
//     return new PaguroSetBuilder();
//   }
// 
//   @Override
//   public JmhMap.Builder mapBuilder() {
//     return new PaguroMapBuilder();
//   }
// 
//   @Override
//   public String toString() {
//     return "VF_PAGURO";
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/impl/persistent/vavr/VavrValueFactory.java
// public class VavrValueFactory implements JmhValueFactory {
// 
//   @Override
//   public JmhSet.Builder setBuilder() {
//     return new VavrSetBuilder();
//   }
// 
//   @Override
//   public JmhMap.Builder mapBuilder() {
//     return new VavrMapBuilder();
//   }
// 
//   @Override
//   public String toString() {
//     return "VF_VAVR";
//   }
// 
// }


import java.util.Arrays;
import java.util.Random;
import io.usethesource.capsule.core.PersistentBidirectionalTrieSetMultimap;
import io.usethesource.capsule.core.PersistentTrieMap;
import io.usethesource.capsule.core.PersistentTrieSet;
import io.usethesource.capsule.core.PersistentTrieSetMultimap;
import io.usethesource.capsule.experimental.heterogeneous.TrieMap_5Bits_Heterogeneous_BleedingEdge;
import io.usethesource.capsule.experimental.memoized.TrieMap_5Bits_Memoized_LazyHashCode;
import io.usethesource.capsule.experimental.memoized.TrieSet_5Bits_Memoized_LazyHashCode;
import io.usethesource.capsule.experimental.multimap.TrieSetMultimap_HHAMT;
import io.usethesource.capsule.experimental.multimap.TrieSetMultimap_HHAMT_Specialized;
import io.usethesource.capsule.experimental.specialized.TrieMap_5Bits_Spec0To8;
import io.usethesource.capsule.experimental.specialized.TrieSet_5Bits_Spec0To8;
import io.usethesource.criterion.api.JmhValueFactory;
import io.usethesource.criterion.impl.immutable.guava.ImmutableGuavaValueFactory;
import io.usethesource.criterion.impl.persistent.paguro.PaguroValueFactory;
import io.usethesource.criterion.impl.persistent.vavr.VavrValueFactory;
/**
 * Copyright (c) Michael Steindorfer <Centrum Wiskunde & Informatica> and Contributors.
 * All rights reserved.
 *
 * This file is licensed under the BSD 2-Clause License, which accompanies this project
 * and is available under https://opensource.org/licenses/BSD-2-Clause.
 */
package io.usethesource.criterion;



public class BenchmarkUtils {

  public enum ValueFactoryFactory {
    VF_CLOJURE {
      @Override
// Path: src/main/java/io/usethesource/criterion/api/JmhValueFactory.java
// public interface JmhValueFactory {
// 
//   static RuntimeException FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION =
//       new UnsupportedOperationException("Not yet implemented.");
// 
//   // default JmhSet set() {
//   // return setBuilder().done();
//   // }
// 
//   default JmhSet.Builder setBuilder() {
//     throw FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION;
//   }
// 
//   // default JmhMap map() {
//   // return mapBuilder().done();
//   // }
// 
//   default JmhMap.Builder mapBuilder() {
//     throw FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION;
//   }
// 
//   // default JmhSetMultimap setMulimap() {
//   // return setMultimapBuilder().done();
//   // }
// 
//   default JmhSetMultimap.Builder setMultimapBuilder() {
//     throw FACTORY_NOT_YET_IMPLEMENTED_EXCEPTION;
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/impl/immutable/guava/ImmutableGuavaValueFactory.java
// public class ImmutableGuavaValueFactory implements JmhValueFactory {
// 
//   public ImmutableGuavaValueFactory() {
//   }
// 
//   @Override
//   public JmhSet.Builder setBuilder() {
//     return new ImmutableGuavaSetBuilder();
//   }
// 
//   @Override
//   public JmhMap.Builder mapBuilder() {
//     return new ImmutableGuavaMapBuilder();
//   }
// 
//   @Override
//   public JmhSetMultimap.Builder setMultimapBuilder() {
//     return new ImmutableGuavaSetMultimapBuilder();
//   }
// 
//   @Override
//   public String toString() {
//     return "VF_GUAVA_IMMUTABLE";
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/impl/persistent/paguro/PaguroValueFactory.java
// public class PaguroValueFactory implements JmhValueFactory {
// 
//   @Override
//   public JmhSet.Builder setBuilder() {
//     return new PaguroSetBuilder();
//   }
// 
//   @Override
//   public JmhMap.Builder mapBuilder() {
//     return new PaguroMapBuilder();
//   }
// 
//   @Override
//   public String toString() {
//     return "VF_PAGURO";
//   }
// 
// }
// 
// Path: src/main/java/io/usethesource/criterion/impl/persistent/vavr/VavrValueFactory.java
// public class VavrValueFactory implements JmhValueFactory {
// 
//   @Override
//   public JmhSet.Builder setBuilder() {
//     return new VavrSetBuilder();
//   }
// 
//   @Override
//   public JmhMap.Builder mapBuilder() {
//     return new VavrMapBuilder();
//   }
// 
//   @Override
//   public String toString() {
//     return "VF_VAVR";
//   }
// 
// }


// Path: src/main/java/io/usethesource/criterion/BenchmarkUtils.java
import java.util.Arrays;
import java.util.Random;
import io.usethesource.capsule.core.PersistentBidirectionalTrieSetMultimap;
import io.usethesource.capsule.core.PersistentTrieMap;
import io.usethesource.capsule.core.PersistentTrieSet;
import io.usethesource.capsule.core.PersistentTrieSetMultimap;
import io.usethesource.capsule.experimental.heterogeneous.TrieMap_5Bits_Heterogeneous_BleedingEdge;
import io.usethesource.capsule.experimental.memoized.TrieMap_5Bits_Memoized_LazyHashCode;
import io.usethesource.capsule.experimental.memoized.TrieSet_5Bits_Memoized_LazyHashCode;
import io.usethesource.capsule.experimental.multimap.TrieSetMultimap_HHAMT;
import io.usethesource.capsule.experimental.multimap.TrieSetMultimap_HHAMT_Specialized;
import io.usethesource.capsule.experimental.specialized.TrieMap_5Bits_Spec0To8;
import io.usethesource.capsule.experimental.specialized.TrieSet_5Bits_Spec0To8;
import io.usethesource.criterion.api.JmhValueFactory;
import io.usethesource.criterion.impl.immutable.guava.ImmutableGuavaValueFactory;
import io.usethesource.criterion.impl.persistent.paguro.PaguroValueFactory;
import io.usethesource.criterion.impl.persistent.vavr.VavrValueFactory;

/**
 * Copyright (c) Michael Steindorfer <Centrum Wiskunde & Informatica> and Contributors.
 * All rights reserved.
 *
 * This file is licensed under the BSD 2-Clause License, which accompanies this project
 * and is available under https://opensource.org/licenses/BSD-2-Clause.
 */
package io.usethesource.criterion;



public class BenchmarkUtils {

  public enum ValueFactoryFactory {
    VF_CLOJURE {
      @Override
      public JmhValueFactory getInstance() {