// Path: src/main/java/com/github/liblevenshtein/collection/dictionary/factory/DawgFactory.java
// @Slf4j
// public class DawgFactory implements Serializable {
// 
//   private static final long serialVersionUID = 1L;
// 
//   /**
//    * Returns a new DAWG.
//    * @param terms Terms to insert into the DAWG
//    * @return A new DAWG, containing the terms.
//    */
//   public Dawg build(@NonNull final Collection<String> terms) {
//     return build(terms, false);
//   }
// 
//   /**
//    * Returns a new DAWG.
//    * @param terms Terms to insert into the DAWG
//    * @param isSorted Whether terms has been sorted
//    * @return A new DAWG, containing the terms.
//    */
//   public Dawg build(
//       @NonNull final Collection<String> terms,
//       final boolean isSorted) {
// 
//     if (terms instanceof SortedDawg) {
//       return (SortedDawg) terms;
//     }
// 
//     if (!isSorted) {
//       if (!(terms instanceof List)) {
//         return build(new ArrayList<String>(terms), false);
//       }
// 
//       Collections.sort((List<String>) terms);
//     }
// 
//     return new SortedDawg(terms);
//   }
// 
//   /**
//    * Returns the final function of the dictionary.
//    * @param dictionary Dawg whose final function should be returned
//    * @return The final function of the dictionary
//    */
//   public IFinalFunction<DawgNode> finalFunction(@NonNull final Dawg dictionary) {
//     return dictionary;
//   }
// 
//   /**
//    * Returns the transition function of the dictionary.
//    * @param dictionary Dawg whose transition function should be returned
//    * @return The transition function of the dictionary
//    */
//   public ITransitionFunction<DawgNode> transitionFunction(@NonNull final Dawg dictionary) {
//     return dictionary;
//   }
// }
// 
// Path: src/test/java/com/github/liblevenshtein/assertion/SetAssertions.java
// public static <Type> SetAssertions<Type> assertThat(final Set<Type> actual) {
//   return new SetAssertions<Type>(actual);
// }


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.google.common.base.Joiner;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import com.github.liblevenshtein.collection.dictionary.factory.DawgFactory;
import static com.github.liblevenshtein.assertion.SetAssertions.assertThat;
package com.github.liblevenshtein.collection.dictionary;








@Slf4j
public class DawgTest {

  private List<String> terms;

// Path: src/main/java/com/github/liblevenshtein/collection/dictionary/factory/DawgFactory.java
// @Slf4j
// public class DawgFactory implements Serializable {
// 
//   private static final long serialVersionUID = 1L;
// 
//   /**
//    * Returns a new DAWG.
//    * @param terms Terms to insert into the DAWG
//    * @return A new DAWG, containing the terms.
//    */
//   public Dawg build(@NonNull final Collection<String> terms) {
//     return build(terms, false);
//   }
// 
//   /**
//    * Returns a new DAWG.
//    * @param terms Terms to insert into the DAWG
//    * @param isSorted Whether terms has been sorted
//    * @return A new DAWG, containing the terms.
//    */
//   public Dawg build(
//       @NonNull final Collection<String> terms,
//       final boolean isSorted) {
// 
//     if (terms instanceof SortedDawg) {
//       return (SortedDawg) terms;
//     }
// 
//     if (!isSorted) {
//       if (!(terms instanceof List)) {
//         return build(new ArrayList<String>(terms), false);
//       }
// 
//       Collections.sort((List<String>) terms);
//     }
// 
//     return new SortedDawg(terms);
//   }
// 
//   /**
//    * Returns the final function of the dictionary.
//    * @param dictionary Dawg whose final function should be returned
//    * @return The final function of the dictionary
//    */
//   public IFinalFunction<DawgNode> finalFunction(@NonNull final Dawg dictionary) {
//     return dictionary;
//   }
// 
//   /**
//    * Returns the transition function of the dictionary.
//    * @param dictionary Dawg whose transition function should be returned
//    * @return The transition function of the dictionary
//    */
//   public ITransitionFunction<DawgNode> transitionFunction(@NonNull final Dawg dictionary) {
//     return dictionary;
//   }
// }
// 
// Path: src/test/java/com/github/liblevenshtein/assertion/SetAssertions.java
// public static <Type> SetAssertions<Type> assertThat(final Set<Type> actual) {
//   return new SetAssertions<Type>(actual);
// }


// Path: src/test/java/com/github/liblevenshtein/collection/dictionary/DawgTest.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.google.common.base.Joiner;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import com.github.liblevenshtein.collection.dictionary.factory.DawgFactory;
import static com.github.liblevenshtein.assertion.SetAssertions.assertThat;

package com.github.liblevenshtein.collection.dictionary;








@Slf4j
public class DawgTest {

  private List<String> terms;

  private DawgFactory dawgFactory;