public static LinkedList<MaryModule> modulesRequiredForProcessing(MaryDataType sourceType,MaryDataType targetType,Locale locale,Voice voice){
  if (!registrationComplete)   throw new IllegalStateException("Cannot inquire about modules while registration is ongoing");
  if (sourceType == null)   throw new NullPointerException("Received null source type");
  if (targetType == null)   throw new NullPointerException("Received null target type");
  LinkedList<MaryDataType> seenTypes=new LinkedList<MaryDataType>();
  seenTypes.add(sourceType);
  return modulesRequiredForProcessing(sourceType,targetType,locale,voice,seenTypes);
}

public static LinkedList < MaryModule > modulesRequiredForProcessing ( MaryDataType sourceType , MaryDataType targetType , Locale locale , Voice voice ) { if ( ! registrationComplete ) throw new IllegalStateException ( "Cannot inquire about modules while registration is ongoing" ) ; if ( sourceType == null ) throw new NullPointerException ( "Received null source type" ) ; if ( targetType == null ) throw new NullPointerException ( "Received null target type" ) ; LinkedList < MaryDataType > seenTypes = new LinkedList < MaryDataType > ( ) ; seenTypes . add ( sourceType ) ; return modulesRequiredForProcessing ( sourceType , targetType , locale , voice , seenTypes ) ; }
a method for determining the list of modules required to transform the given source data type into the requested target data type . if the voice given is not null , any preferred modules it may have are taken into account .
