code: public final void addStrings(Collection<String> strCollection)
      {
          if (sourceNode != null)
          {
              String previousString = "";
  
              //Add all the Strings in strCollection to the MDAG.
              for (String currentString : strCollection)
              {
                  int mpsIndex = calculateMinimizationProcessingStartIndex(previousString, currentString);
  
                  //If the _transition path of the previousString needs to be examined for minimization or
                  //equivalence class representation after a certain point, call replaceOrRegister to do so.
                  if (mpsIndex != -1)
                  {
  
                      String transitionSubstring = previousString.substring(0, mpsIndex);
                      String minimizationProcessingSubString = previousString.substring(mpsIndex);
                      replaceOrRegister(sourceNode.transition(transitionSubstring), minimizationProcessingSubString);
                  }
                  /////
  
                  addStringInternal(currentString);
                  previousString = currentString;
              }
              /////
  
              //Since we delay the minimization of the previously-added String
              //until after we read the next one, we need to have a seperate
              //statement to minimize the absolute last String.
              replaceOrRegister(sourceNode, previousString);
          }
          else
          {
              unSimplify();
              addStrings(strCollection);
          }
      }
docs: Adds a Collection of Strings to the MDAG.
  
  @param strCollection a {@link java.util.Collection} containing Strings to be added to the MDAG