/**
  * Returns the type of the specified output.
  *
  * @param outputIdx The output index.
  * @return Class Object representing the {@code NemaFileType} that should be used to read the
  *     output file.
  */
 public Class<? extends NemaFileType> getOutputType(int outputIdx) {
   FileCommandArgument arg = outputs.get(outputIdx);
   if (arg == null) {
     return null;
   }
   return arg.getFileType();
 }
 /**
  * Returns any file type properties of the output file. These are may be used to specify arguments
  * to the file type, such notifying the classification file type that it is reading a particular
  * metadata type.
  *
  * @param outputIdx The output index.
  * @return Map with key value pairs defining the properties.
  */
 public Map<String, String> getOutputProperties(int outputIdx) {
   FileCommandArgument arg = outputs.get(outputIdx);
   if (arg == null) {
     return null;
   }
   return arg.getProperties();
 }
 /**
  * Set the list of argument components.
  *
  * @param arguments the list of argument components to set.
  */
 public void setArguments(List<CommandArgument> arguments) {
   this.arguments = arguments;
   for (Iterator iterator = arguments.iterator(); iterator.hasNext(); ) {
     CommandArgument commandArgument = (CommandArgument) iterator.next();
     if (commandArgument.getClass().equals(FileCommandArgument.class)) {
       FileCommandArgument fileArg = (FileCommandArgument) commandArgument;
       if (fileArg.isOutput()) {
         this.outputs.put(fileArg.ioIndex, fileArg);
       } else {
         this.inputs.put(fileArg.ioIndex, fileArg);
       }
     }
   }
 }