diff --git a/debian/changelog b/debian/changelog
index ae7b18a..dcfa714 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+barclay (4.0.1-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+  * Drop patch fix_iterating_in_template.patch, present upstream.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Sun, 15 May 2022 19:31:37 -0000
+
 barclay (4.0.0-1) unstable; urgency=medium
 
   [ Michael R. Crusoe ]
diff --git a/debian/patches/fix_dataprovider.patch b/debian/patches/fix_dataprovider.patch
index 5922dd2..862b57b 100644
--- a/debian/patches/fix_dataprovider.patch
+++ b/debian/patches/fix_dataprovider.patch
@@ -1,6 +1,8 @@
---- a/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
-+++ b/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
-@@ -961,14 +961,6 @@ public final class CommandLineArgumentPa
+Index: barclay/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
+===================================================================
+--- barclay.orig/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
++++ barclay/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
+@@ -987,14 +987,6 @@ public final class CommandLineArgumentPa
          };
      }
  
diff --git a/debian/patches/fix_debian_build.patch b/debian/patches/fix_debian_build.patch
index 93f9b6a..aa84d01 100644
--- a/debian/patches/fix_debian_build.patch
+++ b/debian/patches/fix_debian_build.patch
@@ -1,5 +1,7 @@
---- a/build.gradle
-+++ b/build.gradle
+Index: barclay/build.gradle
+===================================================================
+--- barclay.orig/build.gradle
++++ barclay/build.gradle
 @@ -4,8 +4,7 @@ plugins {
      id "java"
      id 'maven'
diff --git a/debian/patches/fix_deprecation.patch b/debian/patches/fix_deprecation.patch
index e941781..bac559b 100644
--- a/debian/patches/fix_deprecation.patch
+++ b/debian/patches/fix_deprecation.patch
@@ -7,8 +7,10 @@ Last-Updated: 2018-05-03
 Author: Olivier Sallou <osallou@debian.org>
 Forwarded: yes
 Bug: https://github.com/broadinstitute/barclay/issues/137
---- a/src/main/java/org/broadinstitute/barclay/argparser/LegacyCommandLineArgumentParser.java
-+++ b/src/main/java/org/broadinstitute/barclay/argparser/LegacyCommandLineArgumentParser.java
+Index: barclay/src/main/java/org/broadinstitute/barclay/argparser/LegacyCommandLineArgumentParser.java
+===================================================================
+--- barclay.orig/src/main/java/org/broadinstitute/barclay/argparser/LegacyCommandLineArgumentParser.java
++++ barclay/src/main/java/org/broadinstitute/barclay/argparser/LegacyCommandLineArgumentParser.java
 @@ -880,7 +880,7 @@ public class LegacyCommandLineArgumentPa
      private void createCollection(final Field field, final Object callerOptions, final String annotationType)
              throws IllegalAccessException {
@@ -18,8 +20,10 @@ Bug: https://github.com/broadinstitute/barclay/issues/137
          } catch (final Exception ex) {
              try {
                  field.set(callerOptions, new ArrayList<>());
---- a/src/test/java/org/broadinstitute/barclay/help/DocWorkUnitTest.java
-+++ b/src/test/java/org/broadinstitute/barclay/help/DocWorkUnitTest.java
+Index: barclay/src/test/java/org/broadinstitute/barclay/help/DocWorkUnitTest.java
+===================================================================
+--- barclay.orig/src/test/java/org/broadinstitute/barclay/help/DocWorkUnitTest.java
++++ barclay/src/test/java/org/broadinstitute/barclay/help/DocWorkUnitTest.java
 @@ -13,7 +13,7 @@ import java.util.Collections;
   * @author Daniel Gomez-Sanchez (magicDGS)
   */
@@ -38,8 +42,10 @@ Bug: https://github.com/broadinstitute/barclay/issues/137
 \ No newline at end of file
 +*/
 +}
---- a/src/test/java/org/broadinstitute/barclay/help/DefaultDocWorkUnitHandlerUnitTest.java
-+++ b/src/test/java/org/broadinstitute/barclay/help/DefaultDocWorkUnitHandlerUnitTest.java
+Index: barclay/src/test/java/org/broadinstitute/barclay/help/DefaultDocWorkUnitHandlerUnitTest.java
+===================================================================
+--- barclay.orig/src/test/java/org/broadinstitute/barclay/help/DefaultDocWorkUnitHandlerUnitTest.java
++++ barclay/src/test/java/org/broadinstitute/barclay/help/DefaultDocWorkUnitHandlerUnitTest.java
 @@ -19,95 +19,6 @@ import java.util.Map;
   */
  public class DefaultDocWorkUnitHandlerUnitTest {
diff --git a/debian/patches/fix_iterating_in_template.patch b/debian/patches/fix_iterating_in_template.patch
deleted file mode 100644
index c3a5a4b..0000000
--- a/debian/patches/fix_iterating_in_template.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Description: correcting the iteration over a LinkedHashMap in Freemarker file
-Author: Pierre Gruet <pgtdebian@free.fr>
-Forwarded: https://github.com/broadinstitute/barclay/issues/168
-Last-Update: 2020-09-10
-
---- a/src/main/resources/org/broadinstitute/barclay/helpTemplates/wdlToolTemplate.wdl.ftl
-+++ b/src/main/resources/org/broadinstitute/barclay/helpTemplates/wdlToolTemplate.wdl.ftl
-@@ -379,11 +379,11 @@
-     <#if outputs?size == 0>
-     File ${name}results = ${name}.${name}_results
-     <#else>
--        <#list outputs as outputName, outputType>
--           <#if requiredOutputs[outputName]??>
--    ${outputType} ${name}${outputName?substring(2)} = ${name}.${name}_${outputName?substring(2)}
-+        <#list outputs?keys as key>
-+           <#if requiredOutputs[key]??>
-+    ${outputs[key]} ${name}${key?substring(2)} = ${name}.${name}_${key?substring(2)}
-            <#else>
--    ${outputType}? ${name}${outputName?substring(2)} = ${name}.${name}_${outputName?substring(2)}
-+    ${outputs[key]}? ${name}${key?substring(2)} = ${name}.${name}_${key?substring(2)}
-            </#if>
-         </#list>
-     </#if>
-@@ -394,11 +394,11 @@
-     <#if outputs?size == 0>
-     File ${name}_results = stdout()
-     <#else>
--        <#list outputs as outputName, outputType>
--            <#if requiredOutputs[outputName]??>
--    ${outputType} ${name}_${outputName?substring(2)} = ${outputName?substring(2)}
-+        <#list outputs?keys as key>
-+            <#if requiredOutputs[key]??>
-+    ${outputs[key]} ${name}_${key?substring(2)} = ${key?substring(2)}
-             <#else>
--    ${outputType}? ${name}_${outputName?substring(2)} = ${outputName?substring(2)}
-+    ${outputs[key]}? ${name}_${key?substring(2)} = ${key?substring(2)}
-             </#if>
-         </#list>
-     </#if>
diff --git a/debian/patches/series b/debian/patches/series
index 78a5b58..4939da4 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,3 @@
 fix_debian_build.patch
 fix_deprecation.patch
 fix_dataprovider.patch
-fix_iterating_in_template.patch
diff --git a/src/main/java/org/broadinstitute/barclay/argparser/NamedArgumentDefinition.java b/src/main/java/org/broadinstitute/barclay/argparser/NamedArgumentDefinition.java
index 055b613..1e30c22 100644
--- a/src/main/java/org/broadinstitute/barclay/argparser/NamedArgumentDefinition.java
+++ b/src/main/java/org/broadinstitute/barclay/argparser/NamedArgumentDefinition.java
@@ -443,7 +443,7 @@ public class NamedArgumentDefinition extends ArgumentDefinition {
             sb.append(",-").append(getShortName());
         }
 
-        sb.append(":").append(getUnderlyingFieldClass().getSimpleName());
+        sb.append(String.format(" <%s>", getUnderlyingFieldClass().getSimpleName()));
 
         int labelLength = sb.toString().length();
         int numSpaces = argumentColumnWidth - labelLength;
diff --git a/src/main/java/org/broadinstitute/barclay/help/BashTabCompletionDoclet.java b/src/main/java/org/broadinstitute/barclay/help/BashTabCompletionDoclet.java
index 2db7255..f64f683 100644
--- a/src/main/java/org/broadinstitute/barclay/help/BashTabCompletionDoclet.java
+++ b/src/main/java/org/broadinstitute/barclay/help/BashTabCompletionDoclet.java
@@ -250,12 +250,6 @@ public class BashTabCompletionDoclet extends HelpDoclet {
 
     // =============================================
 
-    // Member variables:
-    protected static String outputFileExtension = "sh";
-    protected static String indexFileExtension = "sh";
-
-    // =============================================
-
     public static boolean start(RootDoc rootDoc) {
         try {
             return new BashTabCompletionDoclet().startProcessDocs(rootDoc);
diff --git a/src/main/java/org/broadinstitute/barclay/help/DocWorkUnitHandler.java b/src/main/java/org/broadinstitute/barclay/help/DocWorkUnitHandler.java
index cd496bb..d0d16bb 100644
--- a/src/main/java/org/broadinstitute/barclay/help/DocWorkUnitHandler.java
+++ b/src/main/java/org/broadinstitute/barclay/help/DocWorkUnitHandler.java
@@ -52,7 +52,7 @@ public abstract class DocWorkUnitHandler {
      * @return the name of the destination file to which documentation output will be written
      */
     public String getDestinationFilename(final DocWorkUnit workUnit) {
-        return DocletUtils.phpFilenameForClass(workUnit.getClazz(), HelpDoclet.outputFileExtension);
+        return DocletUtils.phpFilenameForClass(workUnit.getClazz(), getDoclet().outputFileExtension);
     }
 
     /**
diff --git a/src/main/java/org/broadinstitute/barclay/help/HelpDoclet.java b/src/main/java/org/broadinstitute/barclay/help/HelpDoclet.java
index 39a24ff..c761ea6 100644
--- a/src/main/java/org/broadinstitute/barclay/help/HelpDoclet.java
+++ b/src/main/java/org/broadinstitute/barclay/help/HelpDoclet.java
@@ -80,14 +80,14 @@ public class HelpDoclet {
     // Variables that are set on the command line when running javadoc
     //
     // ----------------------------------------------------------------------
-    protected static File settingsDir = DEFAULT_SETTINGS_DIR;
+    protected File settingsDir = DEFAULT_SETTINGS_DIR;
     protected boolean isSettingsDirSet = false;
-    protected static File destinationDir = DEFAULT_DESTINATION_DIR;
-    protected static String outputFileExtension = DEFAULT_OUTPUT_FILE_EXTENSION;
-    protected static String indexFileExtension = DEFAULT_OUTPUT_FILE_EXTENSION;
-    protected static String buildTimestamp = "[no timestamp available]";
-    protected static String absoluteVersion = "[no version available]";
-    protected static boolean showHiddenFeatures = false;
+    protected File destinationDir = DEFAULT_DESTINATION_DIR;
+    protected String outputFileExtension = DEFAULT_OUTPUT_FILE_EXTENSION;
+    protected String indexFileExtension = DEFAULT_OUTPUT_FILE_EXTENSION;
+    protected String buildTimestamp = "[no timestamp available]";
+    protected String absoluteVersion = "[no version available]";
+    protected boolean showHiddenFeatures = false;
     protected boolean useDefaultTemplates = false;
 
     // Variables to store data for Freemarker:
diff --git a/src/main/resources/org/broadinstitute/barclay/helpTemplates/wdlToolTemplate.wdl.ftl b/src/main/resources/org/broadinstitute/barclay/helpTemplates/wdlToolTemplate.wdl.ftl
index 287cee8..080c5fe 100644
--- a/src/main/resources/org/broadinstitute/barclay/helpTemplates/wdlToolTemplate.wdl.ftl
+++ b/src/main/resources/org/broadinstitute/barclay/helpTemplates/wdlToolTemplate.wdl.ftl
@@ -379,11 +379,11 @@ task ${name} {
     <#if outputs?size == 0>
     File ${name}results = ${name}.${name}_results
     <#else>
-        <#list outputs as outputName, outputType>
-           <#if requiredOutputs[outputName]??>
-    ${outputType} ${name}${outputName?substring(2)} = ${name}.${name}_${outputName?substring(2)}
+        <#list outputs?keys as key>
+           <#if requiredOutputs[key]??>
+    ${outputs[key]} ${name}${key?substring(2)} = ${name}.${name}_${key?substring(2)}
            <#else>
-    ${outputType}? ${name}${outputName?substring(2)} = ${name}.${name}_${outputName?substring(2)}
+    ${outputs[key]}? ${name}${key?substring(2)} = ${name}.${name}_${key?substring(2)}
            </#if>
         </#list>
     </#if>
@@ -394,11 +394,11 @@ task ${name} {
     <#if outputs?size == 0>
     File ${name}_results = stdout()
     <#else>
-        <#list outputs as outputName, outputType>
-            <#if requiredOutputs[outputName]??>
-    ${outputType} ${name}_${outputName?substring(2)} = ${outputName?substring(2)}
+        <#list outputs?keys as key>
+            <#if requiredOutputs[key]??>
+    ${outputs[key]} ${name}_${key?substring(2)} = ${key?substring(2)}
             <#else>
-    ${outputType}? ${name}_${outputName?substring(2)} = ${outputName?substring(2)}
+    ${outputs[key]}? ${name}_${key?substring(2)} = ${key?substring(2)}
             </#if>
         </#list>
     </#if>
diff --git a/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java b/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
index b291ce1..663ca3c 100644
--- a/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
+++ b/src/test/java/org/broadinstitute/barclay/argparser/CommandLineArgumentParserTest.java
@@ -96,6 +96,32 @@ public final class CommandLineArgumentParserTest {
         public String OSCILLATION_FREQUENCY;
     }
 
+    @DataProvider(name="argUsageCases")
+    public Object[][] argUsageCases() {
+        return new Object[][]{
+                {
+                    new FrobnicateArguments(), Arrays.asList(
+                        "--FROBNICATION_FLAVOR <FrobnicationFlavor>",
+                        "--SHMIGGLE_TYPE <String>",
+                        "--arguments_file <File>",
+                        "--FROBNICATION_THRESHOLD,-T <Integer>",
+                        "--TRUTHINESS <Boolean>")
+                },
+                {
+                    new MixedCardinalityMutexArguments(), Arrays.asList(
+                        "--collection <String>",
+                        "--scalar <String>")
+                }
+        };
+    }
+
+    @Test(dataProvider = "argUsageCases")
+    public void testArgUsage(final Object argContainer, final List<String> expectedUsageStrings) {
+        final CommandLineArgumentParser clp = new CommandLineArgumentParser(argContainer);
+        final String usageString = clp.usage(true, false);
+        expectedUsageStrings.forEach(s -> Assert.assertTrue(usageString.contains(s)));
+    }
+
     @Test
     public void testRequiredOnlyUsage() {
         final RequiredOnlyArguments nr = new RequiredOnlyArguments();
diff --git a/src/test/java/org/broadinstitute/barclay/help/wdltestinputs/TestWDLTool.java b/src/test/java/org/broadinstitute/barclay/help/wdltestinputs/TestWDLTool.java
index 74f7718..33ce484 100644
--- a/src/test/java/org/broadinstitute/barclay/help/wdltestinputs/TestWDLTool.java
+++ b/src/test/java/org/broadinstitute/barclay/help/wdltestinputs/TestWDLTool.java
@@ -37,72 +37,206 @@ public class TestWDLTool {
     public static final String GROUP_NAME = "WDL feature group name";
 
     @PositionalArguments(doc = "Positional args doc")
-    @WorkflowInput(requiredCompanions ={"posDictionary", "posIndex"}, localizationOptional = true)
+    @WorkflowInput(requiredCompanions={"posDictionary", "posIndex"}, localizationOptional = true)
     public List<File> positionalListFileInput;
 
-    // required Files
-    @Argument(fullName = "requiredScalarFileInput",
-            shortName = "requiredScalarFileInput",
-            doc = "requiredScalarFileInput doc",
+    // required input Files
+
+    @Argument(fullName = "requiredScalarFileInputNoCompanions",
+            shortName = "requiredScalarFileInputNoCompanions",
+            doc = "requiredScalarFileInputNoCompanions doc",
             optional = false)
-    @WorkflowInput(requiredCompanions = {"requiredScalarFileInputDictionary", "requiredScalarFileInputIndex"},
-                    optionalCompanions = {"requiredScalarFileInputOptionalCompanion"},
-                    localizationOptional = true)
-    public File requiredScalarFileInput;
-
-    @Argument(fullName = "requiredListFileInput",
-            shortName = "requiredListFileInput",
-            doc = "requiredListFileInput doc",
+    @WorkflowInput
+    public File requiredScalarFileInputNoCompanions;
+
+    @Argument(fullName = "requiredScalarFileInputRequiredCompanions",
+            shortName = "requiredScalarFileInputRequiredCompanions",
+            doc = "requiredScalarFileInputRequiredCompanions doc",
             optional = false)
-    @WorkflowInput(requiredCompanions ={"requiredListFileInputDictionary", "requiredListFileInputIndex"})
-    public List<File> requiredListFileInput;
+    @WorkflowInput(requiredCompanions={"requiredScalarFileInputRequiredCompanionsDictionary", "requiredScalarFileInputRequiredCompanionsIndex"}, localizationOptional = true)
+    public File requiredScalarFileInputRequiredCompanions;
 
-    // outputs
-    @Argument(fullName = "requiredScalarFileOutput",
-            shortName = "requiredScalarFileOutput",
-            doc = "requiredScalarFileOutput doc",
+    @Argument(fullName = "requiredScalarFileInputOptionalCompanions",
+            shortName = "requiredScalarFileInputOptionalCompanions",
+            doc = "requiredScalarFileInputOptionalCompanions doc",
             optional = false)
-    @WorkflowOutput(
-            requiredCompanions = {"requiredScalarFileOutputDictionary", "requiredScalarFileOutputIndex"},
-            optionalCompanions = {"requiredScalarFileOutputOptionalCompanion"})
-    public File requiredScalarFileOutput;
+    @WorkflowInput(optionalCompanions={"requiredScalarFileInputOptionalCompanionsDictionary", "requiredScalarFileInputOptionalCompanionsIndex"}, localizationOptional = true)
+    public File requiredScalarFileInputOptionalCompanions;
+
+    @Argument(fullName = "requiredListFileInputNoCompanions",
+            shortName = "requiredListFileInputNoCompanions",
+            doc = "requiredListFileInputNoCompanions doc",
+            optional = false)
+    @WorkflowInput
+    public List<File> requiredListFileInputNoCompanions;
+
+    @Argument(fullName = "requiredListFileInputRequiredCompanions",
+            shortName = "requiredListFileInputRequiredCompanions",
+            doc = "requiredListFileInputRequiredCompanions doc",
+            optional = false)
+    @WorkflowInput(requiredCompanions={"requiredListFileInputRequiredCompanionsDictionary", "requiredListFileInputRequiredCompanionsIndex"}, localizationOptional = true)
+    public List<File> requiredListFileInputRequiredCompanions;
+
+    @Argument(fullName = "requiredListFileInputOptionalCompanions",
+            shortName = "requiredListFileInputOptionalCompanions",
+            doc = "requiredListFileInputOptionalCompanions doc",
+            optional = false)
+    @WorkflowInput(optionalCompanions={"requiredListFileInputOptionalCompanionsDictionary", "requiredListFileInputOptionalCompanionsIndex"}, localizationOptional = true)
+    public List<File> requiredListFileInputOptionalCompanions;
+
+    @Argument(fullName = "requiredListFileInputMixedCompanions",
+            shortName = "requiredListFileInputMixedCompanions",
+            doc = "requiredListFileInputMixedCompanions doc",
+            optional = false)
+    @WorkflowInput(
+            requiredCompanions = {"requiredListFileInputMixedCompanionsRequired"},
+            optionalCompanions = {"requiredListFileInputMixedCompanionsOptional"})
+    public List<File> requiredListFileInputMixedCompanions;
 
-    @Argument(fullName = "requiredListFileOutput",
-            shortName = "requiredListFileOutput",
-            doc = "requiredListFileOutput doc",
+    // required output Files
+
+    @Argument(fullName = "requiredScalarFileOutputNoCompanions",
+            shortName = "requiredScalarFileOutputNoCompanions",
+            doc = "requiredScalarFileOutputNoCompanions doc",
+            optional = false)
+    @WorkflowOutput
+    public File requiredScalarFileOutputNoCompanions;
+
+    @Argument(fullName = "requiredScalarFileOutputRequiredCompanions",
+            shortName = "requiredScalarFileOutputRequiredCompanions",
+            doc = "requiredScalarFileOutputRequiredCompanions doc",
             optional = false)
-    @WorkflowOutput(requiredCompanions ={"requiredListFileOutputDictionary", "requiredListFileOutputIndex"})
-    public List<File> requiredListFileOutput;
+    @WorkflowOutput(requiredCompanions={"requiredScalarFileOutputRequiredCompanionsDictionary", "requiredScalarFileOutputRequiredCompanionsIndex"})
+    public File requiredScalarFileOutputRequiredCompanions;
 
+    @Argument(fullName = "requiredScalarFileOutputOptionalCompanions",
+            shortName = "requiredScalarFileOutputOptionalCompanions",
+            doc = "requiredScalarFileOutputOptionalCompanions doc",
+            optional = false)
+    @WorkflowOutput(optionalCompanions={"requiredScalarFileOutputOptionalCompanionsDictionary", "requiredScalarFileOutputOptionalCompanionsIndex"})
+    public File requiredScalarFileOutputOptionalCompanions;
+
+    @Argument(fullName = "requiredListFileOutputNoCompanions",
+            shortName = "requiredListFileOutputNoCompanions",
+            doc = "requiredListFileOutputNoCompanions doc",
+            optional = false)
+    @WorkflowOutput
+    public List<File> requiredListFileOutputNoCompanions;
 
-    // optional Files
-    @Argument(fullName = "optionalScalarFileInput",
-            shortName = "optionalScalarFileInput",
-            doc = "optionalScalarFileInput doc",
+    @Argument(fullName = "requiredListFileOutputRequiredCompanions",
+            shortName = "requiredListFileOutputRequiredCompanions",
+            doc = "requiredListFileOutputRequiredCompanions doc",
+            optional = false)
+    @WorkflowOutput(requiredCompanions={"requiredListFileOutputRequiredCompanionsDictionary", "requiredListFileOutputRequiredCompanionsIndex"})
+    public List<File> requiredListFileOutputRequiredCompanions;
+
+    @Argument(fullName = "requiredListFileOutputOptionalCompanions",
+            shortName = "requiredListFileOutputOptionalCompanions",
+            doc = "requiredListFileOutputOptionalCompanions doc",
+            optional = false)
+    @WorkflowOutput(optionalCompanions={"requiredListFileOutputOptionalCompanionsDictionary", "requiredListFileOutputOptionalCompanionsIndex"})
+    public List<File> requiredListFileOutputOptionalCompanions;
+
+    @Argument(fullName = "requiredListFileOutputMixedCompanions",
+            shortName = "requiredListFileOutputMixedCompanions",
+            doc = "requiredListFileOutputMixedCompanions doc",
+            optional = false)
+    @WorkflowOutput(
+            requiredCompanions = {"requiredListFileOutputMixedCompanionsRequired"},
+            optionalCompanions = {"requiredListFileOutputMixedCompanionsOptional"})
+    public List<File> requiredListFileOutputMixedCompanions;
+
+    // optional input Files
+
+    @Argument(fullName = "optionalScalarFileInputNoCompanions",
+            shortName = "optionalScalarFileInputNoCompanions",
+            doc = "optionalScalarFileInputNoCompanions doc",
             optional = true)
-    @WorkflowInput(requiredCompanions ={"optionalScalarFileInputDictionary", "optionalScalarFileInputIndex"})
-    public File optionalScalarFileInput;
+    @WorkflowInput
+    public File optionalScalarFileInputNoCompanions;
 
-    @Argument(fullName = "optionalListFileInput",
-            shortName = "optionalListFileInput",
-            doc = "optionalListFileInput doc",
+    @Argument(fullName = "optionalScalarFileInputOptionalCompanions",
+            shortName = "optionalScalarFileInputOptionalCompanions",
+            doc = "optionalScalarFileInputOptionalCompanions doc",
             optional = true)
-    @WorkflowInput(requiredCompanions ={"optionalListFileInputDictionary", "optionalListFileInputIndex"})
-    public List<File> optionalListFileInput;
+    @WorkflowInput(optionalCompanions={"optionalScalarFileInputOptionalCompanionsDictionary", "optionalScalarFileInputOptionalCompanionsIndex"})
+    public File optionalScalarFileInputOptionalCompanions;
 
-    @Argument(fullName = "optionaldScalarFileOutput",
-            shortName = "optionalScalarFileOutput",
-            doc = "optionalScalarFileOutput doc",
+    @Argument(fullName = "optionalScalarFileInputRequiredCompanions",
+            shortName = "optionalScalarFileInputRequiredCompanions",
+            doc = "optionalScalarFileInputRequiredCompanions doc",
             optional = true)
-    @WorkflowOutput(requiredCompanions ={"optionalScalarFileOutputDictionary", "optionalScalarFileOutputIndex"})
-    public File optionalScalarFileOutput;
+    @WorkflowInput(requiredCompanions={"optionalScalarFileInputRequiredCompanionsDictionary", "optionalScalarFileInputRequiredCompanionsIndex"})
+    public File optionalScalarFileInputRequiredCompanions;
 
-    @Argument(fullName = "optionaldListFileOutput",
-            shortName = "optionalListFileOutput",
-            doc = "optionalListFileOutput doc",
+    @Argument(fullName = "optionalListFileInputNoCompanions",
+            shortName = "optionalListFileInputNoCompanions",
+            doc = "optionalListFileInputNoCompanions doc",
             optional = true)
-    @WorkflowOutput(requiredCompanions ={"optionalListFileOutputDictionary", "optionalListFileOutputIndex"})
-    public List<File> optionalListFileOutput;
+    @WorkflowInput
+    public List<File> optionalListFileInputNoCompanions;
+
+    @Argument(fullName = "optionalListFileInputRequiredCompanions",
+            shortName = "optionalListFileInputRequiredCompanions",
+            doc = "optionalListFileInputRequiredCompanions doc",
+            optional = true)
+    @WorkflowInput(requiredCompanions={"optionalListFileInputRequiredCompanionsDictionary", "optionalListFileInputRequiredCompanionsIndex"})
+    public List<File> optionalListFileInputRequiredCompanions;
+
+    @Argument(fullName = "optionalListFileInputOptionalCompanions",
+            shortName = "optionalListFileInputOptionalCompanions",
+            doc = "optionalListFileInputOptionalCompanions doc",
+            optional = true)
+    @WorkflowInput(optionalCompanions={"optionalListFileInputOptionalCompanionsDictionary", "optionalListFileInputOptionalCompanionsIndex"})
+    public List<File> optionalListFileInputOptionalCompanions;
+
+    @Argument(fullName = "optionalListFileInputMixedCompanions",
+            shortName = "optionalListFileInputMixedCompanions",
+            doc = "optionalListFileInputMixedCompanions doc",
+            optional = true)
+    @WorkflowInput(
+            requiredCompanions = {"optionalListFileInputMixedCompanionsRequired"},
+            optionalCompanions = {"optionalListFileInputMixedCompanionsOptional"})
+    public List<File> optionalListFileInputMixedCompanions;
+
+    // optional output Files
+
+    @Argument(fullName = "optionalScalarFileOutputNoCompanions",
+            shortName = "optionalScalarFileOutputNoCompanions",
+            doc = "optionalScalarFileOutputNoCompanions doc",
+            optional = true)
+    @WorkflowOutput
+    public File optionalScalarFileOutputNoCompanions;
+
+    @Argument(fullName = "optionalScalarFileOutputRequiredCompanions",
+            shortName = "optionalScalarFileOutputRequiredCompanions",
+            doc = "optionalScalarFileOutputRequiredCompanions doc",
+            optional = true)
+    @WorkflowOutput(requiredCompanions={"optionalScalarFileOutputRequiredCompanionsDictionary", "optionalScalarFileOutputRequiredCompanionsIndex"})
+    public File optionalScalarFileOutputRequiredCompanions;
+
+    @Argument(fullName = "optionalScalarFileOutputOptionalCompanions",
+            shortName = "optionalScalarFileOutputOptionalCompanions",
+            doc = "optionalScalarFileOutputOptionalCompanions doc",
+            optional = true)
+    @WorkflowOutput(requiredCompanions={"optionalScalarFileOutputOptionalCompanionsDictionary", "optionalScalarFileOutputOptionalCompanionsIndex"})
+    public File optionalScalarFileOutputOptionalCompanions;
+
+    @Argument(fullName = "optionalListFileOutputRequiredCompanions",
+            shortName = "optionalListFileOutputRequiredCompanions",
+            doc = "optionalListFileOutputRequiredCompanions doc",
+            optional = true)
+    @WorkflowOutput(requiredCompanions={"optionalListFileOutputRequiredCompanionsDictionary", "optionalListFileOutputRequiredCompanionsIndex"})
+    public List<File> optionalListFileOutputRequiredCompanions;
+
+    @Argument(fullName = "optionalListFileOutputMixedCompanions",
+            shortName = "optionalListFileOutputMixedCompanions",
+            doc = "optionalListFileOutputMixedCompanions doc",
+            optional = true)
+    @WorkflowOutput(
+            requiredCompanions = {"optionalListFileOutputMixedCompanionsRequired"},
+            optionalCompanions = {"optionalListFileOutputMixedCompanionsOptional"})
+    public List<File> optionalListFileOutputMixedCompanions;
 
     // non-File types
 
diff --git a/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.json b/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.json
index 45c6de8..ea3b4bf 100644
--- a/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.json
+++ b/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.json
@@ -11,40 +11,78 @@
   "TestWDLTool.posIndex": "Array[File]",
   "TestWDLTool.positionalArgs":   "Array[File]",
 
-  "TestWDLTool.requiredListFileInputDictionary": "Array[File]",
-  "TestWDLTool.requiredListFileInputIndex": "Array[File]",
-  "TestWDLTool.requiredListFileInput":   "Array[File]",
-  "TestWDLTool.requiredListFileOutputDictionary": "Array[String]",
-  "TestWDLTool.requiredListFileOutputIndex": "Array[String]",
-  "TestWDLTool.requiredListFileOutput":   "Array[String]",
-  "TestWDLTool.requiredScalarFileInputDictionary": "File",
-  "TestWDLTool.requiredScalarFileInputIndex": "File",
-  "TestWDLTool.requiredScalarFileInputOptionalCompanion": "File",
-  "TestWDLTool.requiredScalarFileInput":   "File",
-  "TestWDLTool.requiredScalarFileOutputDictionary": "String",
-  "TestWDLTool.requiredScalarFileOutputIndex": "String",
-  "TestWDLTool.requiredScalarFileOutputOptionalCompanion": "String",
-  "TestWDLTool.requiredScalarFileOutput":   "String",
+  "TestWDLTool.requiredListFileInputMixedCompanionsRequired": "Array[File]",
+  "TestWDLTool.requiredListFileInputMixedCompanionsOptional": "Array[File]",
+  "TestWDLTool.requiredListFileInputMixedCompanions":   "Array[File]",
+  "TestWDLTool.requiredListFileInputNoCompanions":   "Array[File]",
+  "TestWDLTool.requiredListFileInputOptionalCompanionsDictionary": "Array[File]",
+  "TestWDLTool.requiredListFileInputOptionalCompanionsIndex": "Array[File]",
+  "TestWDLTool.requiredListFileInputOptionalCompanions":   "Array[File]",
+  "TestWDLTool.requiredListFileInputRequiredCompanionsDictionary": "Array[File]",
+  "TestWDLTool.requiredListFileInputRequiredCompanionsIndex": "Array[File]",
+  "TestWDLTool.requiredListFileInputRequiredCompanions":   "Array[File]",
+  "TestWDLTool.requiredListFileOutputMixedCompanionsRequired": "Array[String]",
+  "TestWDLTool.requiredListFileOutputMixedCompanionsOptional": "Array[String]",
+  "TestWDLTool.requiredListFileOutputMixedCompanions":   "Array[String]",
+  "TestWDLTool.requiredListFileOutputNoCompanions":   "Array[String]",
+  "TestWDLTool.requiredListFileOutputOptionalCompanionsDictionary": "Array[String]",
+  "TestWDLTool.requiredListFileOutputOptionalCompanionsIndex": "Array[String]",
+  "TestWDLTool.requiredListFileOutputOptionalCompanions":   "Array[String]",
+  "TestWDLTool.requiredListFileOutputRequiredCompanionsDictionary": "Array[String]",
+  "TestWDLTool.requiredListFileOutputRequiredCompanionsIndex": "Array[String]",
+  "TestWDLTool.requiredListFileOutputRequiredCompanions":   "Array[String]",
+  "TestWDLTool.requiredScalarFileInputNoCompanions":   "File",
+  "TestWDLTool.requiredScalarFileInputOptionalCompanionsDictionary": "File",
+  "TestWDLTool.requiredScalarFileInputOptionalCompanionsIndex": "File",
+  "TestWDLTool.requiredScalarFileInputOptionalCompanions":   "File",
+  "TestWDLTool.requiredScalarFileInputRequiredCompanionsDictionary": "File",
+  "TestWDLTool.requiredScalarFileInputRequiredCompanionsIndex": "File",
+  "TestWDLTool.requiredScalarFileInputRequiredCompanions":   "File",
+  "TestWDLTool.requiredScalarFileOutputNoCompanions":   "String",
+  "TestWDLTool.requiredScalarFileOutputOptionalCompanionsDictionary": "String",
+  "TestWDLTool.requiredScalarFileOutputOptionalCompanionsIndex": "String",
+  "TestWDLTool.requiredScalarFileOutputOptionalCompanions":   "String",
+  "TestWDLTool.requiredScalarFileOutputRequiredCompanionsDictionary": "String",
+  "TestWDLTool.requiredScalarFileOutputRequiredCompanionsIndex": "String",
+  "TestWDLTool.requiredScalarFileOutputRequiredCompanions":   "String",
 
-  "TestWDLTool.optionalListFileOutputDictionary": null,
-  "TestWDLTool.optionalListFileOutputIndex": null,
-  "TestWDLTool.optionaldListFileOutput": null,
-  "TestWDLTool.optionalScalarFileOutputDictionary": null,
-  "TestWDLTool.optionalScalarFileOutputIndex": null,
-  "TestWDLTool.optionaldScalarFileOutput": null,
   "TestWDLTool.optionalListDoubleInput": null,
-  "TestWDLTool.optionalListFileInputDictionary": null,
-  "TestWDLTool.optionalListFileInputIndex": null,
-  "TestWDLTool.optionalListFileInput": null,
+  "TestWDLTool.optionalListFileInputMixedCompanionsRequired": null,
+  "TestWDLTool.optionalListFileInputMixedCompanionsOptional": null,
+  "TestWDLTool.optionalListFileInputMixedCompanions": null,
+  "TestWDLTool.optionalListFileInputNoCompanions": null,
+  "TestWDLTool.optionalListFileInputOptionalCompanionsDictionary": null,
+  "TestWDLTool.optionalListFileInputOptionalCompanionsIndex": null,
+  "TestWDLTool.optionalListFileInputOptionalCompanions": null,
+  "TestWDLTool.optionalListFileInputRequiredCompanionsDictionary": null,
+  "TestWDLTool.optionalListFileInputRequiredCompanionsIndex": null,
+  "TestWDLTool.optionalListFileInputRequiredCompanions": null,
+  "TestWDLTool.optionalListFileOutputMixedCompanionsRequired": null,
+  "TestWDLTool.optionalListFileOutputMixedCompanionsOptional": null,
+  "TestWDLTool.optionalListFileOutputMixedCompanions": null,
+  "TestWDLTool.optionalListFileOutputRequiredCompanionsDictionary": null,
+  "TestWDLTool.optionalListFileOutputRequiredCompanionsIndex": null,
+  "TestWDLTool.optionalListFileOutputRequiredCompanions": null,
   "TestWDLTool.optionalListFloatInput": null,
   "TestWDLTool.optionalListIntegerInput": null,
   "TestWDLTool.optionalListLongInput": null,
   "TestWDLTool.optionalListStringInput": null,
   "TestWDLTool.optionalScalarDoubleInput": null,
   "TestWDLTool.optionalScalarDoublePrimitiveInput": 0.0,
-  "TestWDLTool.optionalScalarFileInputDictionary": null,
-  "TestWDLTool.optionalScalarFileInputIndex": null,
-  "TestWDLTool.optionalScalarFileInput": null,
+  "TestWDLTool.optionalScalarFileInputNoCompanions": null,
+  "TestWDLTool.optionalScalarFileInputOptionalCompanionsDictionary": null,
+  "TestWDLTool.optionalScalarFileInputOptionalCompanionsIndex": null,
+  "TestWDLTool.optionalScalarFileInputOptionalCompanions": null,
+  "TestWDLTool.optionalScalarFileInputRequiredCompanionsDictionary": null,
+  "TestWDLTool.optionalScalarFileInputRequiredCompanionsIndex": null,
+  "TestWDLTool.optionalScalarFileInputRequiredCompanions": null,
+  "TestWDLTool.optionalScalarFileOutputNoCompanions": null,
+  "TestWDLTool.optionalScalarFileOutputOptionalCompanionsDictionary": null,
+  "TestWDLTool.optionalScalarFileOutputOptionalCompanionsIndex": null,
+  "TestWDLTool.optionalScalarFileOutputOptionalCompanions": null,
+  "TestWDLTool.optionalScalarFileOutputRequiredCompanionsDictionary": null,
+  "TestWDLTool.optionalScalarFileOutputRequiredCompanionsIndex": null,
+  "TestWDLTool.optionalScalarFileOutputRequiredCompanions": null,
   "TestWDLTool.optionalScalarFloatInput": null,
   "TestWDLTool.optionalScalarFloatPrimitiveInput": 0.0,
   "TestWDLTool.optionalScalarIntegerInput": null,
diff --git a/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.wdl b/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.wdl
index d484ec3..7381282 100644
--- a/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.wdl
+++ b/src/test/resources/org/broadinstitute/barclay/help/expected/WDLSpecificTest/org_broadinstitute_barclay_help_wdltestinputs_TestWDLTool.wdl
@@ -19,41 +19,79 @@ version 1.0
 #    posIndex                                           Companion resource for positionalArgs                       
 #
 #  Required Tool Arguments
-#    requiredListFileInput                              requiredListFileInput doc                                   
-#    requiredListFileInputDictionary                    Companion resource for requiredListFileInput                
-#    requiredListFileInputIndex                         Companion resource for requiredListFileInput                
-#    requiredListFileOutput                             requiredListFileOutput doc                                  
-#    requiredListFileOutputDictionary                   Companion resource for requiredListFileOutput               
-#    requiredListFileOutputIndex                        Companion resource for requiredListFileOutput               
-#    requiredScalarFileInput                            requiredScalarFileInput doc                                 
-#    requiredScalarFileInputDictionary                  Companion resource for requiredScalarFileInput              
-#    requiredScalarFileInputIndex                       Companion resource for requiredScalarFileInput              
-#    requiredScalarFileInputOptionalCompanion           Optional Companion resource for requiredScalarFileInput              
-#    requiredScalarFileOutput                           requiredScalarFileOutput doc                                
-#    requiredScalarFileOutputDictionary                 Companion resource for requiredScalarFileOutput             
-#    requiredScalarFileOutputIndex                      Companion resource for requiredScalarFileOutput             
-#    requiredScalarFileOutputOptionalCompanion          Optional Companion resource for requiredScalarFileOutput             
+#    requiredListFileInputMixedCompanions               requiredListFileInputMixedCompanions doc                    
+#    requiredListFileInputMixedCompanionsRequired       Companion resource for requiredListFileInputMixedCompanions 
+#    requiredListFileInputMixedCompanionsOptional       Optional Companion resource for requiredListFileInputMixedCompanions 
+#    requiredListFileInputNoCompanions                  requiredListFileInputNoCompanions doc                       
+#    requiredListFileInputOptionalCompanions            requiredListFileInputOptionalCompanions doc                 
+#    requiredListFileInputOptionalCompanionsDictionary  Optional Companion resource for requiredListFileInputOptionalCompanions
+#    requiredListFileInputOptionalCompanionsIndex       Optional Companion resource for requiredListFileInputOptionalCompanions
+#    requiredListFileInputRequiredCompanions            requiredListFileInputRequiredCompanions doc                 
+#    requiredListFileInputRequiredCompanionsDictionary  Companion resource for requiredListFileInputRequiredCompanions
+#    requiredListFileInputRequiredCompanionsIndex       Companion resource for requiredListFileInputRequiredCompanions
+#    requiredListFileOutputMixedCompanions              requiredListFileOutputMixedCompanions doc                   
+#    requiredListFileOutputMixedCompanionsRequired      Companion resource for requiredListFileOutputMixedCompanions
+#    requiredListFileOutputMixedCompanionsOptional      Optional Companion resource for requiredListFileOutputMixedCompanions
+#    requiredListFileOutputNoCompanions                 requiredListFileOutputNoCompanions doc                      
+#    requiredListFileOutputOptionalCompanions           requiredListFileOutputOptionalCompanions doc                
+#    requiredListFileOutputOptionalCompanionsDictionary Optional Companion resource for requiredListFileOutputOptionalCompanions
+#    requiredListFileOutputOptionalCompanionsIndex      Optional Companion resource for requiredListFileOutputOptionalCompanions
+#    requiredListFileOutputRequiredCompanions           requiredListFileOutputRequiredCompanions doc                
+#    requiredListFileOutputRequiredCompanionsDictionary Companion resource for requiredListFileOutputRequiredCompanions
+#    requiredListFileOutputRequiredCompanionsIndex      Companion resource for requiredListFileOutputRequiredCompanions
+#    requiredScalarFileInputNoCompanions                requiredScalarFileInputNoCompanions doc                     
+#    requiredScalarFileInputOptionalCompanions          requiredScalarFileInputOptionalCompanions doc               
+#    requiredScalarFileInputOptionalCompanionsDictionary Optional Companion resource for requiredScalarFileInputOptionalCompanions
+#    requiredScalarFileInputOptionalCompanionsIndex     Optional Companion resource for requiredScalarFileInputOptionalCompanions
+#    requiredScalarFileInputRequiredCompanions          requiredScalarFileInputRequiredCompanions doc               
+#    requiredScalarFileInputRequiredCompanionsDictionary Companion resource for requiredScalarFileInputRequiredCompanions
+#    requiredScalarFileInputRequiredCompanionsIndex     Companion resource for requiredScalarFileInputRequiredCompanions
+#    requiredScalarFileOutputNoCompanions               requiredScalarFileOutputNoCompanions doc                    
+#    requiredScalarFileOutputOptionalCompanions         requiredScalarFileOutputOptionalCompanions doc              
+#    requiredScalarFileOutputOptionalCompanionsDictionary Optional Companion resource for requiredScalarFileOutputOptionalCompanions
+#    requiredScalarFileOutputOptionalCompanionsIndex    Optional Companion resource for requiredScalarFileOutputOptionalCompanions
+#    requiredScalarFileOutputRequiredCompanions         requiredScalarFileOutputRequiredCompanions doc              
+#    requiredScalarFileOutputRequiredCompanionsDictionary Companion resource for requiredScalarFileOutputRequiredCompanions
+#    requiredScalarFileOutputRequiredCompanionsIndex    Companion resource for requiredScalarFileOutputRequiredCompanions
 #
 #  Optional Tool Arguments
-#    optionaldListFileOutput                            optionalListFileOutput doc                                  
-#    optionalListFileOutputDictionary                   Optional Companion resource for optionaldListFileOutput              
-#    optionalListFileOutputIndex                        Optional Companion resource for optionaldListFileOutput              
-#    optionaldScalarFileOutput                          optionalScalarFileOutput doc                                
-#    optionalScalarFileOutputDictionary                 Optional Companion resource for optionaldScalarFileOutput            
-#    optionalScalarFileOutputIndex                      Optional Companion resource for optionaldScalarFileOutput            
 #    optionalListDoubleInput                            optionalListDoubleInput doc                                 
-#    optionalListFileInput                              optionalListFileInput doc                                   
-#    optionalListFileInputDictionary                    Optional Companion resource for optionalListFileInput                
-#    optionalListFileInputIndex                         Optional Companion resource for optionalListFileInput                
+#    optionalListFileInputMixedCompanions               optionalListFileInputMixedCompanions doc                    
+#    optionalListFileInputMixedCompanionsRequired       Optional Companion resource for optionalListFileInputMixedCompanions 
+#    optionalListFileInputMixedCompanionsOptional       Optional Companion resource for optionalListFileInputMixedCompanions 
+#    optionalListFileInputNoCompanions                  optionalListFileInputNoCompanions doc                       
+#    optionalListFileInputOptionalCompanions            optionalListFileInputOptionalCompanions doc                 
+#    optionalListFileInputOptionalCompanionsDictionary  Optional Companion resource for optionalListFileInputOptionalCompanions
+#    optionalListFileInputOptionalCompanionsIndex       Optional Companion resource for optionalListFileInputOptionalCompanions
+#    optionalListFileInputRequiredCompanions            optionalListFileInputRequiredCompanions doc                 
+#    optionalListFileInputRequiredCompanionsDictionary  Optional Companion resource for optionalListFileInputRequiredCompanions
+#    optionalListFileInputRequiredCompanionsIndex       Optional Companion resource for optionalListFileInputRequiredCompanions
+#    optionalListFileOutputMixedCompanions              optionalListFileOutputMixedCompanions doc                   
+#    optionalListFileOutputMixedCompanionsRequired      Optional Companion resource for optionalListFileOutputMixedCompanions
+#    optionalListFileOutputMixedCompanionsOptional      Optional Companion resource for optionalListFileOutputMixedCompanions
+#    optionalListFileOutputRequiredCompanions           optionalListFileOutputRequiredCompanions doc                
+#    optionalListFileOutputRequiredCompanionsDictionary Optional Companion resource for optionalListFileOutputRequiredCompanions
+#    optionalListFileOutputRequiredCompanionsIndex      Optional Companion resource for optionalListFileOutputRequiredCompanions
 #    optionalListFloatInput                             optionalListFloatInput doc                                  
 #    optionalListIntegerInput                           optionalListIntegerInput doc                                
 #    optionalListLongInput                              optionalListLongInput doc                                   
 #    optionalListStringInput                            optionalListStringInput doc                                 
 #    optionalScalarDoubleInput                          optionalScalarDoubleInput doc                               
 #    optionalScalarDoublePrimitiveInput                 optionalScalarDoublePrimitiveInput doc                      
-#    optionalScalarFileInput                            optionalScalarFileInput doc                                 
-#    optionalScalarFileInputDictionary                  Optional Companion resource for optionalScalarFileInput              
-#    optionalScalarFileInputIndex                       Optional Companion resource for optionalScalarFileInput              
+#    optionalScalarFileInputNoCompanions                optionalScalarFileInputNoCompanions doc                     
+#    optionalScalarFileInputOptionalCompanions          optionalScalarFileInputOptionalCompanions doc               
+#    optionalScalarFileInputOptionalCompanionsDictionary Optional Companion resource for optionalScalarFileInputOptionalCompanions
+#    optionalScalarFileInputOptionalCompanionsIndex     Optional Companion resource for optionalScalarFileInputOptionalCompanions
+#    optionalScalarFileInputRequiredCompanions          optionalScalarFileInputRequiredCompanions doc               
+#    optionalScalarFileInputRequiredCompanionsDictionary Optional Companion resource for optionalScalarFileInputRequiredCompanions
+#    optionalScalarFileInputRequiredCompanionsIndex     Optional Companion resource for optionalScalarFileInputRequiredCompanions
+#    optionalScalarFileOutputNoCompanions               optionalScalarFileOutputNoCompanions doc                    
+#    optionalScalarFileOutputOptionalCompanions         optionalScalarFileOutputOptionalCompanions doc              
+#    optionalScalarFileOutputOptionalCompanionsDictionary Optional Companion resource for optionalScalarFileOutputOptionalCompanions
+#    optionalScalarFileOutputOptionalCompanionsIndex    Optional Companion resource for optionalScalarFileOutputOptionalCompanions
+#    optionalScalarFileOutputRequiredCompanions         optionalScalarFileOutputRequiredCompanions doc              
+#    optionalScalarFileOutputRequiredCompanionsDictionary Optional Companion resource for optionalScalarFileOutputRequiredCompanions
+#    optionalScalarFileOutputRequiredCompanionsIndex    Optional Companion resource for optionalScalarFileOutputRequiredCompanions
 #    optionalScalarFloatInput                           optionalScalarFloatInput doc                                
 #    optionalScalarFloatPrimitiveInput                  optionalScalarFloatPrimitiveInput doc                       
 #    optionalScalarIntegerInput                         optionalScalarIntegerInput doc                              
@@ -87,41 +125,79 @@ workflow TestWDLTool {
     Array[File] posIndex
 
     # Required Arguments
-    Array[File] requiredListFileInput
-    Array[File] requiredListFileInputDictionary
-    Array[File] requiredListFileInputIndex
-    Array[String] requiredListFileOutput
-    Array[String] requiredListFileOutputDictionary
-    Array[String] requiredListFileOutputIndex
-    File requiredScalarFileInput
-    File requiredScalarFileInputDictionary
-    File requiredScalarFileInputIndex
-    File? requiredScalarFileInputOptionalCompanion
-    String requiredScalarFileOutput
-    String requiredScalarFileOutputDictionary
-    String requiredScalarFileOutputIndex
-    String? requiredScalarFileOutputOptionalCompanion
+    Array[File] requiredListFileInputMixedCompanions
+    Array[File] requiredListFileInputMixedCompanionsRequired
+    Array[File]? requiredListFileInputMixedCompanionsOptional
+    Array[File] requiredListFileInputNoCompanions
+    Array[File] requiredListFileInputOptionalCompanions
+    Array[File]? requiredListFileInputOptionalCompanionsDictionary
+    Array[File]? requiredListFileInputOptionalCompanionsIndex
+    Array[File] requiredListFileInputRequiredCompanions
+    Array[File] requiredListFileInputRequiredCompanionsDictionary
+    Array[File] requiredListFileInputRequiredCompanionsIndex
+    Array[String] requiredListFileOutputMixedCompanions
+    Array[String] requiredListFileOutputMixedCompanionsRequired
+    Array[String]? requiredListFileOutputMixedCompanionsOptional
+    Array[String] requiredListFileOutputNoCompanions
+    Array[String] requiredListFileOutputOptionalCompanions
+    Array[String]? requiredListFileOutputOptionalCompanionsDictionary
+    Array[String]? requiredListFileOutputOptionalCompanionsIndex
+    Array[String] requiredListFileOutputRequiredCompanions
+    Array[String] requiredListFileOutputRequiredCompanionsDictionary
+    Array[String] requiredListFileOutputRequiredCompanionsIndex
+    File requiredScalarFileInputNoCompanions
+    File requiredScalarFileInputOptionalCompanions
+    File? requiredScalarFileInputOptionalCompanionsDictionary
+    File? requiredScalarFileInputOptionalCompanionsIndex
+    File requiredScalarFileInputRequiredCompanions
+    File requiredScalarFileInputRequiredCompanionsDictionary
+    File requiredScalarFileInputRequiredCompanionsIndex
+    String requiredScalarFileOutputNoCompanions
+    String requiredScalarFileOutputOptionalCompanions
+    String? requiredScalarFileOutputOptionalCompanionsDictionary
+    String? requiredScalarFileOutputOptionalCompanionsIndex
+    String requiredScalarFileOutputRequiredCompanions
+    String requiredScalarFileOutputRequiredCompanionsDictionary
+    String requiredScalarFileOutputRequiredCompanionsIndex
 
     # Optional Tool Arguments
-    Array[String]? optionaldListFileOutput
-    Array[String]? optionalListFileOutputDictionary
-    Array[String]? optionalListFileOutputIndex
-    String? optionaldScalarFileOutput
-    String? optionalScalarFileOutputDictionary
-    String? optionalScalarFileOutputIndex
     Array[Float]? optionalListDoubleInput
-    Array[File]? optionalListFileInput
-    Array[File]? optionalListFileInputDictionary
-    Array[File]? optionalListFileInputIndex
+    Array[File]? optionalListFileInputMixedCompanions
+    Array[File]? optionalListFileInputMixedCompanionsRequired
+    Array[File]? optionalListFileInputMixedCompanionsOptional
+    Array[File]? optionalListFileInputNoCompanions
+    Array[File]? optionalListFileInputOptionalCompanions
+    Array[File]? optionalListFileInputOptionalCompanionsDictionary
+    Array[File]? optionalListFileInputOptionalCompanionsIndex
+    Array[File]? optionalListFileInputRequiredCompanions
+    Array[File]? optionalListFileInputRequiredCompanionsDictionary
+    Array[File]? optionalListFileInputRequiredCompanionsIndex
+    Array[String]? optionalListFileOutputMixedCompanions
+    Array[String]? optionalListFileOutputMixedCompanionsRequired
+    Array[String]? optionalListFileOutputMixedCompanionsOptional
+    Array[String]? optionalListFileOutputRequiredCompanions
+    Array[String]? optionalListFileOutputRequiredCompanionsDictionary
+    Array[String]? optionalListFileOutputRequiredCompanionsIndex
     Array[Float]? optionalListFloatInput
     Array[Int]? optionalListIntegerInput
     Array[Int]? optionalListLongInput
     Array[String]? optionalListStringInput
     Float? optionalScalarDoubleInput
     Float? optionalScalarDoublePrimitiveInput
-    File? optionalScalarFileInput
-    File? optionalScalarFileInputDictionary
-    File? optionalScalarFileInputIndex
+    File? optionalScalarFileInputNoCompanions
+    File? optionalScalarFileInputOptionalCompanions
+    File? optionalScalarFileInputOptionalCompanionsDictionary
+    File? optionalScalarFileInputOptionalCompanionsIndex
+    File? optionalScalarFileInputRequiredCompanions
+    File? optionalScalarFileInputRequiredCompanionsDictionary
+    File? optionalScalarFileInputRequiredCompanionsIndex
+    String? optionalScalarFileOutputNoCompanions
+    String? optionalScalarFileOutputOptionalCompanions
+    String? optionalScalarFileOutputOptionalCompanionsDictionary
+    String? optionalScalarFileOutputOptionalCompanionsIndex
+    String? optionalScalarFileOutputRequiredCompanions
+    String? optionalScalarFileOutputRequiredCompanionsDictionary
+    String? optionalScalarFileOutputRequiredCompanionsIndex
     Float? optionalScalarFloatInput
     Float? optionalScalarFloatPrimitiveInput
     Int? optionalScalarIntegerInput
@@ -158,41 +234,79 @@ workflow TestWDLTool {
         posIndex                                           = posIndex,
 
         # Required Arguments
-        requiredListFileInput                              = requiredListFileInput,
-        requiredListFileInputDictionary                    = requiredListFileInputDictionary,
-        requiredListFileInputIndex                         = requiredListFileInputIndex,
-        requiredListFileOutput                             = requiredListFileOutput,
-        requiredListFileOutputDictionary                   = requiredListFileOutputDictionary,
-        requiredListFileOutputIndex                        = requiredListFileOutputIndex,
-        requiredScalarFileInput                            = requiredScalarFileInput,
-        requiredScalarFileInputDictionary                  = requiredScalarFileInputDictionary,
-        requiredScalarFileInputIndex                       = requiredScalarFileInputIndex,
-        requiredScalarFileInputOptionalCompanion           = requiredScalarFileInputOptionalCompanion,
-        requiredScalarFileOutput                           = requiredScalarFileOutput,
-        requiredScalarFileOutputDictionary                 = requiredScalarFileOutputDictionary,
-        requiredScalarFileOutputIndex                      = requiredScalarFileOutputIndex,
-        requiredScalarFileOutputOptionalCompanion          = requiredScalarFileOutputOptionalCompanion,
+        requiredListFileInputMixedCompanions               = requiredListFileInputMixedCompanions,
+        requiredListFileInputMixedCompanionsRequired       = requiredListFileInputMixedCompanionsRequired,
+        requiredListFileInputMixedCompanionsOptional       = requiredListFileInputMixedCompanionsOptional,
+        requiredListFileInputNoCompanions                  = requiredListFileInputNoCompanions,
+        requiredListFileInputOptionalCompanions            = requiredListFileInputOptionalCompanions,
+        requiredListFileInputOptionalCompanionsDictionary  = requiredListFileInputOptionalCompanionsDictionary,
+        requiredListFileInputOptionalCompanionsIndex       = requiredListFileInputOptionalCompanionsIndex,
+        requiredListFileInputRequiredCompanions            = requiredListFileInputRequiredCompanions,
+        requiredListFileInputRequiredCompanionsDictionary  = requiredListFileInputRequiredCompanionsDictionary,
+        requiredListFileInputRequiredCompanionsIndex       = requiredListFileInputRequiredCompanionsIndex,
+        requiredListFileOutputMixedCompanions              = requiredListFileOutputMixedCompanions,
+        requiredListFileOutputMixedCompanionsRequired      = requiredListFileOutputMixedCompanionsRequired,
+        requiredListFileOutputMixedCompanionsOptional      = requiredListFileOutputMixedCompanionsOptional,
+        requiredListFileOutputNoCompanions                 = requiredListFileOutputNoCompanions,
+        requiredListFileOutputOptionalCompanions           = requiredListFileOutputOptionalCompanions,
+        requiredListFileOutputOptionalCompanionsDictionary = requiredListFileOutputOptionalCompanionsDictionary,
+        requiredListFileOutputOptionalCompanionsIndex      = requiredListFileOutputOptionalCompanionsIndex,
+        requiredListFileOutputRequiredCompanions           = requiredListFileOutputRequiredCompanions,
+        requiredListFileOutputRequiredCompanionsDictionary = requiredListFileOutputRequiredCompanionsDictionary,
+        requiredListFileOutputRequiredCompanionsIndex      = requiredListFileOutputRequiredCompanionsIndex,
+        requiredScalarFileInputNoCompanions                = requiredScalarFileInputNoCompanions,
+        requiredScalarFileInputOptionalCompanions          = requiredScalarFileInputOptionalCompanions,
+        requiredScalarFileInputOptionalCompanionsDictionary = requiredScalarFileInputOptionalCompanionsDictionary,
+        requiredScalarFileInputOptionalCompanionsIndex     = requiredScalarFileInputOptionalCompanionsIndex,
+        requiredScalarFileInputRequiredCompanions          = requiredScalarFileInputRequiredCompanions,
+        requiredScalarFileInputRequiredCompanionsDictionary = requiredScalarFileInputRequiredCompanionsDictionary,
+        requiredScalarFileInputRequiredCompanionsIndex     = requiredScalarFileInputRequiredCompanionsIndex,
+        requiredScalarFileOutputNoCompanions               = requiredScalarFileOutputNoCompanions,
+        requiredScalarFileOutputOptionalCompanions         = requiredScalarFileOutputOptionalCompanions,
+        requiredScalarFileOutputOptionalCompanionsDictionary = requiredScalarFileOutputOptionalCompanionsDictionary,
+        requiredScalarFileOutputOptionalCompanionsIndex    = requiredScalarFileOutputOptionalCompanionsIndex,
+        requiredScalarFileOutputRequiredCompanions         = requiredScalarFileOutputRequiredCompanions,
+        requiredScalarFileOutputRequiredCompanionsDictionary = requiredScalarFileOutputRequiredCompanionsDictionary,
+        requiredScalarFileOutputRequiredCompanionsIndex    = requiredScalarFileOutputRequiredCompanionsIndex,
 
         # Optional Tool Arguments
-        optionaldListFileOutput                            = optionaldListFileOutput,
-        optionalListFileOutputDictionary                   = optionalListFileOutputDictionary,
-        optionalListFileOutputIndex                        = optionalListFileOutputIndex,
-        optionaldScalarFileOutput                          = optionaldScalarFileOutput,
-        optionalScalarFileOutputDictionary                 = optionalScalarFileOutputDictionary,
-        optionalScalarFileOutputIndex                      = optionalScalarFileOutputIndex,
         optionalListDoubleInput                            = optionalListDoubleInput,
-        optionalListFileInput                              = optionalListFileInput,
-        optionalListFileInputDictionary                    = optionalListFileInputDictionary,
-        optionalListFileInputIndex                         = optionalListFileInputIndex,
+        optionalListFileInputMixedCompanions               = optionalListFileInputMixedCompanions,
+        optionalListFileInputMixedCompanionsRequired       = optionalListFileInputMixedCompanionsRequired,
+        optionalListFileInputMixedCompanionsOptional       = optionalListFileInputMixedCompanionsOptional,
+        optionalListFileInputNoCompanions                  = optionalListFileInputNoCompanions,
+        optionalListFileInputOptionalCompanions            = optionalListFileInputOptionalCompanions,
+        optionalListFileInputOptionalCompanionsDictionary  = optionalListFileInputOptionalCompanionsDictionary,
+        optionalListFileInputOptionalCompanionsIndex       = optionalListFileInputOptionalCompanionsIndex,
+        optionalListFileInputRequiredCompanions            = optionalListFileInputRequiredCompanions,
+        optionalListFileInputRequiredCompanionsDictionary  = optionalListFileInputRequiredCompanionsDictionary,
+        optionalListFileInputRequiredCompanionsIndex       = optionalListFileInputRequiredCompanionsIndex,
+        optionalListFileOutputMixedCompanions              = optionalListFileOutputMixedCompanions,
+        optionalListFileOutputMixedCompanionsRequired      = optionalListFileOutputMixedCompanionsRequired,
+        optionalListFileOutputMixedCompanionsOptional      = optionalListFileOutputMixedCompanionsOptional,
+        optionalListFileOutputRequiredCompanions           = optionalListFileOutputRequiredCompanions,
+        optionalListFileOutputRequiredCompanionsDictionary = optionalListFileOutputRequiredCompanionsDictionary,
+        optionalListFileOutputRequiredCompanionsIndex      = optionalListFileOutputRequiredCompanionsIndex,
         optionalListFloatInput                             = optionalListFloatInput,
         optionalListIntegerInput                           = optionalListIntegerInput,
         optionalListLongInput                              = optionalListLongInput,
         optionalListStringInput                            = optionalListStringInput,
         optionalScalarDoubleInput                          = optionalScalarDoubleInput,
         optionalScalarDoublePrimitiveInput                 = optionalScalarDoublePrimitiveInput,
-        optionalScalarFileInput                            = optionalScalarFileInput,
-        optionalScalarFileInputDictionary                  = optionalScalarFileInputDictionary,
-        optionalScalarFileInputIndex                       = optionalScalarFileInputIndex,
+        optionalScalarFileInputNoCompanions                = optionalScalarFileInputNoCompanions,
+        optionalScalarFileInputOptionalCompanions          = optionalScalarFileInputOptionalCompanions,
+        optionalScalarFileInputOptionalCompanionsDictionary = optionalScalarFileInputOptionalCompanionsDictionary,
+        optionalScalarFileInputOptionalCompanionsIndex     = optionalScalarFileInputOptionalCompanionsIndex,
+        optionalScalarFileInputRequiredCompanions          = optionalScalarFileInputRequiredCompanions,
+        optionalScalarFileInputRequiredCompanionsDictionary = optionalScalarFileInputRequiredCompanionsDictionary,
+        optionalScalarFileInputRequiredCompanionsIndex     = optionalScalarFileInputRequiredCompanionsIndex,
+        optionalScalarFileOutputNoCompanions               = optionalScalarFileOutputNoCompanions,
+        optionalScalarFileOutputOptionalCompanions         = optionalScalarFileOutputOptionalCompanions,
+        optionalScalarFileOutputOptionalCompanionsDictionary = optionalScalarFileOutputOptionalCompanionsDictionary,
+        optionalScalarFileOutputOptionalCompanionsIndex    = optionalScalarFileOutputOptionalCompanionsIndex,
+        optionalScalarFileOutputRequiredCompanions         = optionalScalarFileOutputRequiredCompanions,
+        optionalScalarFileOutputRequiredCompanionsDictionary = optionalScalarFileOutputRequiredCompanionsDictionary,
+        optionalScalarFileOutputRequiredCompanionsIndex    = optionalScalarFileOutputRequiredCompanionsIndex,
         optionalScalarFloatInput                           = optionalScalarFloatInput,
         optionalScalarFloatPrimitiveInput                  = optionalScalarFloatPrimitiveInput,
         optionalScalarIntegerInput                         = optionalScalarIntegerInput,
@@ -205,19 +319,36 @@ workflow TestWDLTool {
 
   output {
     # Workflow Outputs                                  
-    File TestWDLToolrequiredScalarFileOutput = TestWDLTool.TestWDLTool_requiredScalarFileOutput
-    File TestWDLToolrequiredScalarFileOutputDictionary = TestWDLTool.TestWDLTool_requiredScalarFileOutputDictionary
-    File TestWDLToolrequiredScalarFileOutputIndex = TestWDLTool.TestWDLTool_requiredScalarFileOutputIndex
-    File? TestWDLToolrequiredScalarFileOutputOptionalCompanion = TestWDLTool.TestWDLTool_requiredScalarFileOutputOptionalCompanion
-    Array[File] TestWDLToolrequiredListFileOutput = TestWDLTool.TestWDLTool_requiredListFileOutput
-    Array[File] TestWDLToolrequiredListFileOutputDictionary = TestWDLTool.TestWDLTool_requiredListFileOutputDictionary
-    Array[File] TestWDLToolrequiredListFileOutputIndex = TestWDLTool.TestWDLTool_requiredListFileOutputIndex
-    File? TestWDLTooloptionaldScalarFileOutput = TestWDLTool.TestWDLTool_optionaldScalarFileOutput
-    File? TestWDLTooloptionalScalarFileOutputDictionary = TestWDLTool.TestWDLTool_optionalScalarFileOutputDictionary
-    File? TestWDLTooloptionalScalarFileOutputIndex = TestWDLTool.TestWDLTool_optionalScalarFileOutputIndex
-    Array[File]? TestWDLTooloptionaldListFileOutput = TestWDLTool.TestWDLTool_optionaldListFileOutput
-    Array[File]? TestWDLTooloptionalListFileOutputDictionary = TestWDLTool.TestWDLTool_optionalListFileOutputDictionary
-    Array[File]? TestWDLTooloptionalListFileOutputIndex = TestWDLTool.TestWDLTool_optionalListFileOutputIndex
+    File TestWDLToolrequiredScalarFileOutputNoCompanions = TestWDLTool.TestWDLTool_requiredScalarFileOutputNoCompanions
+    File TestWDLToolrequiredScalarFileOutputRequiredCompanions = TestWDLTool.TestWDLTool_requiredScalarFileOutputRequiredCompanions
+    File TestWDLToolrequiredScalarFileOutputRequiredCompanionsDictionary = TestWDLTool.TestWDLTool_requiredScalarFileOutputRequiredCompanionsDictionary
+    File TestWDLToolrequiredScalarFileOutputRequiredCompanionsIndex = TestWDLTool.TestWDLTool_requiredScalarFileOutputRequiredCompanionsIndex
+    File TestWDLToolrequiredScalarFileOutputOptionalCompanions = TestWDLTool.TestWDLTool_requiredScalarFileOutputOptionalCompanions
+    File? TestWDLToolrequiredScalarFileOutputOptionalCompanionsDictionary = TestWDLTool.TestWDLTool_requiredScalarFileOutputOptionalCompanionsDictionary
+    File? TestWDLToolrequiredScalarFileOutputOptionalCompanionsIndex = TestWDLTool.TestWDLTool_requiredScalarFileOutputOptionalCompanionsIndex
+    Array[File] TestWDLToolrequiredListFileOutputNoCompanions = TestWDLTool.TestWDLTool_requiredListFileOutputNoCompanions
+    Array[File] TestWDLToolrequiredListFileOutputRequiredCompanions = TestWDLTool.TestWDLTool_requiredListFileOutputRequiredCompanions
+    Array[File] TestWDLToolrequiredListFileOutputRequiredCompanionsDictionary = TestWDLTool.TestWDLTool_requiredListFileOutputRequiredCompanionsDictionary
+    Array[File] TestWDLToolrequiredListFileOutputRequiredCompanionsIndex = TestWDLTool.TestWDLTool_requiredListFileOutputRequiredCompanionsIndex
+    Array[File] TestWDLToolrequiredListFileOutputOptionalCompanions = TestWDLTool.TestWDLTool_requiredListFileOutputOptionalCompanions
+    Array[File]? TestWDLToolrequiredListFileOutputOptionalCompanionsDictionary = TestWDLTool.TestWDLTool_requiredListFileOutputOptionalCompanionsDictionary
+    Array[File]? TestWDLToolrequiredListFileOutputOptionalCompanionsIndex = TestWDLTool.TestWDLTool_requiredListFileOutputOptionalCompanionsIndex
+    Array[File] TestWDLToolrequiredListFileOutputMixedCompanions = TestWDLTool.TestWDLTool_requiredListFileOutputMixedCompanions
+    Array[File] TestWDLToolrequiredListFileOutputMixedCompanionsRequired = TestWDLTool.TestWDLTool_requiredListFileOutputMixedCompanionsRequired
+    Array[File]? TestWDLToolrequiredListFileOutputMixedCompanionsOptional = TestWDLTool.TestWDLTool_requiredListFileOutputMixedCompanionsOptional
+    File? TestWDLTooloptionalScalarFileOutputNoCompanions = TestWDLTool.TestWDLTool_optionalScalarFileOutputNoCompanions
+    File? TestWDLTooloptionalScalarFileOutputRequiredCompanions = TestWDLTool.TestWDLTool_optionalScalarFileOutputRequiredCompanions
+    File? TestWDLTooloptionalScalarFileOutputRequiredCompanionsDictionary = TestWDLTool.TestWDLTool_optionalScalarFileOutputRequiredCompanionsDictionary
+    File? TestWDLTooloptionalScalarFileOutputRequiredCompanionsIndex = TestWDLTool.TestWDLTool_optionalScalarFileOutputRequiredCompanionsIndex
+    File? TestWDLTooloptionalScalarFileOutputOptionalCompanions = TestWDLTool.TestWDLTool_optionalScalarFileOutputOptionalCompanions
+    File? TestWDLTooloptionalScalarFileOutputOptionalCompanionsDictionary = TestWDLTool.TestWDLTool_optionalScalarFileOutputOptionalCompanionsDictionary
+    File? TestWDLTooloptionalScalarFileOutputOptionalCompanionsIndex = TestWDLTool.TestWDLTool_optionalScalarFileOutputOptionalCompanionsIndex
+    Array[File]? TestWDLTooloptionalListFileOutputRequiredCompanions = TestWDLTool.TestWDLTool_optionalListFileOutputRequiredCompanions
+    Array[File]? TestWDLTooloptionalListFileOutputRequiredCompanionsDictionary = TestWDLTool.TestWDLTool_optionalListFileOutputRequiredCompanionsDictionary
+    Array[File]? TestWDLTooloptionalListFileOutputRequiredCompanionsIndex = TestWDLTool.TestWDLTool_optionalListFileOutputRequiredCompanionsIndex
+    Array[File]? TestWDLTooloptionalListFileOutputMixedCompanions = TestWDLTool.TestWDLTool_optionalListFileOutputMixedCompanions
+    Array[File]? TestWDLTooloptionalListFileOutputMixedCompanionsRequired = TestWDLTool.TestWDLTool_optionalListFileOutputMixedCompanionsRequired
+    Array[File]? TestWDLTooloptionalListFileOutputMixedCompanionsOptional = TestWDLTool.TestWDLTool_optionalListFileOutputMixedCompanionsOptional
   }
 
   parameter_meta {
@@ -244,53 +375,115 @@ workflow TestWDLTool {
     }
 
     # Required Arguments
-    requiredListFileInput: { description: "requiredListFileInput doc" }
-    requiredListFileInputDictionary: { description: "Companion resource for requiredListFileInput" }
-    requiredListFileInputIndex: { description: "Companion resource for requiredListFileInput" }
-    requiredListFileOutput: { description: "requiredListFileOutput doc" }
-    requiredListFileOutputDictionary: { description: "Companion resource for requiredListFileOutput" }
-    requiredListFileOutputIndex: { description: "Companion resource for requiredListFileOutput" }
-    requiredScalarFileInput: {
-      description: "requiredScalarFileInput doc",
+    requiredListFileInputMixedCompanions: { description: "requiredListFileInputMixedCompanions doc" }
+    requiredListFileInputMixedCompanionsRequired: { description: "Companion resource for requiredListFileInputMixedCompanions" }
+    requiredListFileInputMixedCompanionsOptional: { description: "Companion resource for requiredListFileInputMixedCompanions" }
+    requiredListFileInputNoCompanions: { description: "requiredListFileInputNoCompanions doc" }
+    requiredListFileInputOptionalCompanions: {
+      description: "requiredListFileInputOptionalCompanions doc",
       localization_optional : true 
     }
-    requiredScalarFileInputDictionary: {
-      description: "Companion resource for requiredScalarFileInput",
+    requiredListFileInputOptionalCompanionsDictionary: {
+      description: "Companion resource for requiredListFileInputOptionalCompanions",
       localization_optional : true 
     }
-    requiredScalarFileInputIndex: {
-      description: "Companion resource for requiredScalarFileInput",
+    requiredListFileInputOptionalCompanionsIndex: {
+      description: "Companion resource for requiredListFileInputOptionalCompanions",
       localization_optional : true 
     }
-    requiredScalarFileInputOptionalCompanion: {
-      description: "Companion resource for requiredScalarFileInput",
+    requiredListFileInputRequiredCompanions: {
+      description: "requiredListFileInputRequiredCompanions doc",
       localization_optional : true 
     }
-    requiredScalarFileOutput: { description: "requiredScalarFileOutput doc" }
-    requiredScalarFileOutputDictionary: { description: "Companion resource for requiredScalarFileOutput" }
-    requiredScalarFileOutputIndex: { description: "Companion resource for requiredScalarFileOutput" }
-    requiredScalarFileOutputOptionalCompanion: { description: "Companion resource for requiredScalarFileOutput" }
+    requiredListFileInputRequiredCompanionsDictionary: {
+      description: "Companion resource for requiredListFileInputRequiredCompanions",
+      localization_optional : true 
+    }
+    requiredListFileInputRequiredCompanionsIndex: {
+      description: "Companion resource for requiredListFileInputRequiredCompanions",
+      localization_optional : true 
+    }
+    requiredListFileOutputMixedCompanions: { description: "requiredListFileOutputMixedCompanions doc" }
+    requiredListFileOutputMixedCompanionsRequired: { description: "Companion resource for requiredListFileOutputMixedCompanions" }
+    requiredListFileOutputMixedCompanionsOptional: { description: "Companion resource for requiredListFileOutputMixedCompanions" }
+    requiredListFileOutputNoCompanions: { description: "requiredListFileOutputNoCompanions doc" }
+    requiredListFileOutputOptionalCompanions: { description: "requiredListFileOutputOptionalCompanions doc" }
+    requiredListFileOutputOptionalCompanionsDictionary: { description: "Companion resource for requiredListFileOutputOptionalCompanions" }
+    requiredListFileOutputOptionalCompanionsIndex: { description: "Companion resource for requiredListFileOutputOptionalCompanions" }
+    requiredListFileOutputRequiredCompanions: { description: "requiredListFileOutputRequiredCompanions doc" }
+    requiredListFileOutputRequiredCompanionsDictionary: { description: "Companion resource for requiredListFileOutputRequiredCompanions" }
+    requiredListFileOutputRequiredCompanionsIndex: { description: "Companion resource for requiredListFileOutputRequiredCompanions" }
+    requiredScalarFileInputNoCompanions: { description: "requiredScalarFileInputNoCompanions doc" }
+    requiredScalarFileInputOptionalCompanions: {
+      description: "requiredScalarFileInputOptionalCompanions doc",
+      localization_optional : true 
+    }
+    requiredScalarFileInputOptionalCompanionsDictionary: {
+      description: "Companion resource for requiredScalarFileInputOptionalCompanions",
+      localization_optional : true 
+    }
+    requiredScalarFileInputOptionalCompanionsIndex: {
+      description: "Companion resource for requiredScalarFileInputOptionalCompanions",
+      localization_optional : true 
+    }
+    requiredScalarFileInputRequiredCompanions: {
+      description: "requiredScalarFileInputRequiredCompanions doc",
+      localization_optional : true 
+    }
+    requiredScalarFileInputRequiredCompanionsDictionary: {
+      description: "Companion resource for requiredScalarFileInputRequiredCompanions",
+      localization_optional : true 
+    }
+    requiredScalarFileInputRequiredCompanionsIndex: {
+      description: "Companion resource for requiredScalarFileInputRequiredCompanions",
+      localization_optional : true 
+    }
+    requiredScalarFileOutputNoCompanions: { description: "requiredScalarFileOutputNoCompanions doc" }
+    requiredScalarFileOutputOptionalCompanions: { description: "requiredScalarFileOutputOptionalCompanions doc" }
+    requiredScalarFileOutputOptionalCompanionsDictionary: { description: "Companion resource for requiredScalarFileOutputOptionalCompanions" }
+    requiredScalarFileOutputOptionalCompanionsIndex: { description: "Companion resource for requiredScalarFileOutputOptionalCompanions" }
+    requiredScalarFileOutputRequiredCompanions: { description: "requiredScalarFileOutputRequiredCompanions doc" }
+    requiredScalarFileOutputRequiredCompanionsDictionary: { description: "Companion resource for requiredScalarFileOutputRequiredCompanions" }
+    requiredScalarFileOutputRequiredCompanionsIndex: { description: "Companion resource for requiredScalarFileOutputRequiredCompanions" }
 
     # Optional Tool Arguments
-    optionaldListFileOutput: { description: "optionalListFileOutput doc" }
-    optionalListFileOutputDictionary: { description: "Companion resource for optionaldListFileOutput" }
-    optionalListFileOutputIndex: { description: "Companion resource for optionaldListFileOutput" }
-    optionaldScalarFileOutput: { description: "optionalScalarFileOutput doc" }
-    optionalScalarFileOutputDictionary: { description: "Companion resource for optionaldScalarFileOutput" }
-    optionalScalarFileOutputIndex: { description: "Companion resource for optionaldScalarFileOutput" }
     optionalListDoubleInput: { description: "optionalListDoubleInput doc" }
-    optionalListFileInput: { description: "optionalListFileInput doc" }
-    optionalListFileInputDictionary: { description: "Companion resource for optionalListFileInput" }
-    optionalListFileInputIndex: { description: "Companion resource for optionalListFileInput" }
+    optionalListFileInputMixedCompanions: { description: "optionalListFileInputMixedCompanions doc" }
+    optionalListFileInputMixedCompanionsRequired: { description: "Companion resource for optionalListFileInputMixedCompanions" }
+    optionalListFileInputMixedCompanionsOptional: { description: "Companion resource for optionalListFileInputMixedCompanions" }
+    optionalListFileInputNoCompanions: { description: "optionalListFileInputNoCompanions doc" }
+    optionalListFileInputOptionalCompanions: { description: "optionalListFileInputOptionalCompanions doc" }
+    optionalListFileInputOptionalCompanionsDictionary: { description: "Companion resource for optionalListFileInputOptionalCompanions" }
+    optionalListFileInputOptionalCompanionsIndex: { description: "Companion resource for optionalListFileInputOptionalCompanions" }
+    optionalListFileInputRequiredCompanions: { description: "optionalListFileInputRequiredCompanions doc" }
+    optionalListFileInputRequiredCompanionsDictionary: { description: "Companion resource for optionalListFileInputRequiredCompanions" }
+    optionalListFileInputRequiredCompanionsIndex: { description: "Companion resource for optionalListFileInputRequiredCompanions" }
+    optionalListFileOutputMixedCompanions: { description: "optionalListFileOutputMixedCompanions doc" }
+    optionalListFileOutputMixedCompanionsRequired: { description: "Companion resource for optionalListFileOutputMixedCompanions" }
+    optionalListFileOutputMixedCompanionsOptional: { description: "Companion resource for optionalListFileOutputMixedCompanions" }
+    optionalListFileOutputRequiredCompanions: { description: "optionalListFileOutputRequiredCompanions doc" }
+    optionalListFileOutputRequiredCompanionsDictionary: { description: "Companion resource for optionalListFileOutputRequiredCompanions" }
+    optionalListFileOutputRequiredCompanionsIndex: { description: "Companion resource for optionalListFileOutputRequiredCompanions" }
     optionalListFloatInput: { description: "optionalListFloatInput doc" }
     optionalListIntegerInput: { description: "optionalListIntegerInput doc" }
     optionalListLongInput: { description: "optionalListLongInput doc" }
     optionalListStringInput: { description: "optionalListStringInput doc" }
     optionalScalarDoubleInput: { description: "optionalScalarDoubleInput doc" }
     optionalScalarDoublePrimitiveInput: { description: "optionalScalarDoublePrimitiveInput doc" }
-    optionalScalarFileInput: { description: "optionalScalarFileInput doc" }
-    optionalScalarFileInputDictionary: { description: "Companion resource for optionalScalarFileInput" }
-    optionalScalarFileInputIndex: { description: "Companion resource for optionalScalarFileInput" }
+    optionalScalarFileInputNoCompanions: { description: "optionalScalarFileInputNoCompanions doc" }
+    optionalScalarFileInputOptionalCompanions: { description: "optionalScalarFileInputOptionalCompanions doc" }
+    optionalScalarFileInputOptionalCompanionsDictionary: { description: "Companion resource for optionalScalarFileInputOptionalCompanions" }
+    optionalScalarFileInputOptionalCompanionsIndex: { description: "Companion resource for optionalScalarFileInputOptionalCompanions" }
+    optionalScalarFileInputRequiredCompanions: { description: "optionalScalarFileInputRequiredCompanions doc" }
+    optionalScalarFileInputRequiredCompanionsDictionary: { description: "Companion resource for optionalScalarFileInputRequiredCompanions" }
+    optionalScalarFileInputRequiredCompanionsIndex: { description: "Companion resource for optionalScalarFileInputRequiredCompanions" }
+    optionalScalarFileOutputNoCompanions: { description: "optionalScalarFileOutputNoCompanions doc" }
+    optionalScalarFileOutputOptionalCompanions: { description: "optionalScalarFileOutputOptionalCompanions doc" }
+    optionalScalarFileOutputOptionalCompanionsDictionary: { description: "Companion resource for optionalScalarFileOutputOptionalCompanions" }
+    optionalScalarFileOutputOptionalCompanionsIndex: { description: "Companion resource for optionalScalarFileOutputOptionalCompanions" }
+    optionalScalarFileOutputRequiredCompanions: { description: "optionalScalarFileOutputRequiredCompanions doc" }
+    optionalScalarFileOutputRequiredCompanionsDictionary: { description: "Companion resource for optionalScalarFileOutputRequiredCompanions" }
+    optionalScalarFileOutputRequiredCompanionsIndex: { description: "Companion resource for optionalScalarFileOutputRequiredCompanions" }
     optionalScalarFloatInput: { description: "optionalScalarFloatInput doc" }
     optionalScalarFloatPrimitiveInput: { description: "optionalScalarFloatPrimitiveInput doc" }
     optionalScalarIntegerInput: { description: "optionalScalarIntegerInput doc" }
@@ -314,39 +507,77 @@ task TestWDLTool {
     Array[File] positionalArgs
     Array[File] Positional_posDictionary
     Array[File] Positional_posIndex
-    Array[File] requiredListFileInput
-    Array[File] requiredListFileInputDictionary
-    Array[File] requiredListFileInputIndex
-    Array[String] requiredListFileOutput
-    Array[String] requiredListFileOutputDictionary
-    Array[String] requiredListFileOutputIndex
-    File requiredScalarFileInput
-    File requiredScalarFileInputDictionary
-    File requiredScalarFileInputIndex
-    File? requiredScalarFileInputOptionalCompanion
-    String requiredScalarFileOutput
-    String requiredScalarFileOutputDictionary
-    String requiredScalarFileOutputIndex
-    String? requiredScalarFileOutputOptionalCompanion
-    Array[String]? optionaldListFileOutput
-    Array[String]? optionalListFileOutputDictionary
-    Array[String]? optionalListFileOutputIndex
-    String? optionaldScalarFileOutput
-    String? optionalScalarFileOutputDictionary
-    String? optionalScalarFileOutputIndex
+    Array[File] requiredListFileInputMixedCompanions
+    Array[File] requiredListFileInputMixedCompanionsRequired
+    Array[File]? requiredListFileInputMixedCompanionsOptional
+    Array[File] requiredListFileInputNoCompanions
+    Array[File] requiredListFileInputOptionalCompanions
+    Array[File]? requiredListFileInputOptionalCompanionsDictionary
+    Array[File]? requiredListFileInputOptionalCompanionsIndex
+    Array[File] requiredListFileInputRequiredCompanions
+    Array[File] requiredListFileInputRequiredCompanionsDictionary
+    Array[File] requiredListFileInputRequiredCompanionsIndex
+    Array[String] requiredListFileOutputMixedCompanions
+    Array[String] requiredListFileOutputMixedCompanionsRequired
+    Array[String]? requiredListFileOutputMixedCompanionsOptional
+    Array[String] requiredListFileOutputNoCompanions
+    Array[String] requiredListFileOutputOptionalCompanions
+    Array[String]? requiredListFileOutputOptionalCompanionsDictionary
+    Array[String]? requiredListFileOutputOptionalCompanionsIndex
+    Array[String] requiredListFileOutputRequiredCompanions
+    Array[String] requiredListFileOutputRequiredCompanionsDictionary
+    Array[String] requiredListFileOutputRequiredCompanionsIndex
+    File requiredScalarFileInputNoCompanions
+    File requiredScalarFileInputOptionalCompanions
+    File? requiredScalarFileInputOptionalCompanionsDictionary
+    File? requiredScalarFileInputOptionalCompanionsIndex
+    File requiredScalarFileInputRequiredCompanions
+    File requiredScalarFileInputRequiredCompanionsDictionary
+    File requiredScalarFileInputRequiredCompanionsIndex
+    String requiredScalarFileOutputNoCompanions
+    String requiredScalarFileOutputOptionalCompanions
+    String? requiredScalarFileOutputOptionalCompanionsDictionary
+    String? requiredScalarFileOutputOptionalCompanionsIndex
+    String requiredScalarFileOutputRequiredCompanions
+    String requiredScalarFileOutputRequiredCompanionsDictionary
+    String requiredScalarFileOutputRequiredCompanionsIndex
     Array[Float]? optionalListDoubleInput
-    Array[File]? optionalListFileInput
-    Array[File]? optionalListFileInputDictionary
-    Array[File]? optionalListFileInputIndex
+    Array[File]? optionalListFileInputMixedCompanions
+    Array[File]? optionalListFileInputMixedCompanionsRequired
+    Array[File]? optionalListFileInputMixedCompanionsOptional
+    Array[File]? optionalListFileInputNoCompanions
+    Array[File]? optionalListFileInputOptionalCompanions
+    Array[File]? optionalListFileInputOptionalCompanionsDictionary
+    Array[File]? optionalListFileInputOptionalCompanionsIndex
+    Array[File]? optionalListFileInputRequiredCompanions
+    Array[File]? optionalListFileInputRequiredCompanionsDictionary
+    Array[File]? optionalListFileInputRequiredCompanionsIndex
+    Array[String]? optionalListFileOutputMixedCompanions
+    Array[String]? optionalListFileOutputMixedCompanionsRequired
+    Array[String]? optionalListFileOutputMixedCompanionsOptional
+    Array[String]? optionalListFileOutputRequiredCompanions
+    Array[String]? optionalListFileOutputRequiredCompanionsDictionary
+    Array[String]? optionalListFileOutputRequiredCompanionsIndex
     Array[Float]? optionalListFloatInput
     Array[Int]? optionalListIntegerInput
     Array[Int]? optionalListLongInput
     Array[String]? optionalListStringInput
     Float? optionalScalarDoubleInput
     Float? optionalScalarDoublePrimitiveInput
-    File? optionalScalarFileInput
-    File? optionalScalarFileInputDictionary
-    File? optionalScalarFileInputIndex
+    File? optionalScalarFileInputNoCompanions
+    File? optionalScalarFileInputOptionalCompanions
+    File? optionalScalarFileInputOptionalCompanionsDictionary
+    File? optionalScalarFileInputOptionalCompanionsIndex
+    File? optionalScalarFileInputRequiredCompanions
+    File? optionalScalarFileInputRequiredCompanionsDictionary
+    File? optionalScalarFileInputRequiredCompanionsIndex
+    String? optionalScalarFileOutputNoCompanions
+    String? optionalScalarFileOutputOptionalCompanions
+    String? optionalScalarFileOutputOptionalCompanionsDictionary
+    String? optionalScalarFileOutputOptionalCompanionsIndex
+    String? optionalScalarFileOutputRequiredCompanions
+    String? optionalScalarFileOutputRequiredCompanionsDictionary
+    String? optionalScalarFileOutputRequiredCompanionsIndex
     Float? optionalScalarFloatInput
     Float? optionalScalarFloatPrimitiveInput
     Int? optionalScalarIntegerInput
@@ -360,21 +591,39 @@ task TestWDLTool {
   command <<<
     ~{appLocation} TestWDLTool \
     ~{sep=' ' positionalArgs} \
-    --requiredListFileInput ~{sep=' --requiredListFileInput ' requiredListFileInput} \
-    --requiredListFileOutput ~{sep=' --requiredListFileOutput ' requiredListFileOutput} \
-    --requiredScalarFileInput ~{sep=' --requiredScalarFileInput ' requiredScalarFileInput} \
-    --requiredScalarFileOutput ~{sep=' --requiredScalarFileOutput ' requiredScalarFileOutput} \
-    ~{true='--optionaldListFileOutput ' false='' defined(optionaldListFileOutput)}~{sep=' --optionaldListFileOutput ' optionaldListFileOutput} \
-    ~{true='--optionaldScalarFileOutput ' false='' defined(optionaldScalarFileOutput)}~{sep=' --optionaldScalarFileOutput ' optionaldScalarFileOutput} \
+    --requiredListFileInputMixedCompanions ~{sep=' --requiredListFileInputMixedCompanions ' requiredListFileInputMixedCompanions} \
+    --requiredListFileInputNoCompanions ~{sep=' --requiredListFileInputNoCompanions ' requiredListFileInputNoCompanions} \
+    --requiredListFileInputOptionalCompanions ~{sep=' --requiredListFileInputOptionalCompanions ' requiredListFileInputOptionalCompanions} \
+    --requiredListFileInputRequiredCompanions ~{sep=' --requiredListFileInputRequiredCompanions ' requiredListFileInputRequiredCompanions} \
+    --requiredListFileOutputMixedCompanions ~{sep=' --requiredListFileOutputMixedCompanions ' requiredListFileOutputMixedCompanions} \
+    --requiredListFileOutputNoCompanions ~{sep=' --requiredListFileOutputNoCompanions ' requiredListFileOutputNoCompanions} \
+    --requiredListFileOutputOptionalCompanions ~{sep=' --requiredListFileOutputOptionalCompanions ' requiredListFileOutputOptionalCompanions} \
+    --requiredListFileOutputRequiredCompanions ~{sep=' --requiredListFileOutputRequiredCompanions ' requiredListFileOutputRequiredCompanions} \
+    --requiredScalarFileInputNoCompanions ~{sep=' --requiredScalarFileInputNoCompanions ' requiredScalarFileInputNoCompanions} \
+    --requiredScalarFileInputOptionalCompanions ~{sep=' --requiredScalarFileInputOptionalCompanions ' requiredScalarFileInputOptionalCompanions} \
+    --requiredScalarFileInputRequiredCompanions ~{sep=' --requiredScalarFileInputRequiredCompanions ' requiredScalarFileInputRequiredCompanions} \
+    --requiredScalarFileOutputNoCompanions ~{sep=' --requiredScalarFileOutputNoCompanions ' requiredScalarFileOutputNoCompanions} \
+    --requiredScalarFileOutputOptionalCompanions ~{sep=' --requiredScalarFileOutputOptionalCompanions ' requiredScalarFileOutputOptionalCompanions} \
+    --requiredScalarFileOutputRequiredCompanions ~{sep=' --requiredScalarFileOutputRequiredCompanions ' requiredScalarFileOutputRequiredCompanions} \
     ~{true='--optionalListDoubleInput ' false='' defined(optionalListDoubleInput)}~{sep=' --optionalListDoubleInput ' optionalListDoubleInput} \
-    ~{true='--optionalListFileInput ' false='' defined(optionalListFileInput)}~{sep=' --optionalListFileInput ' optionalListFileInput} \
+    ~{true='--optionalListFileInputMixedCompanions ' false='' defined(optionalListFileInputMixedCompanions)}~{sep=' --optionalListFileInputMixedCompanions ' optionalListFileInputMixedCompanions} \
+    ~{true='--optionalListFileInputNoCompanions ' false='' defined(optionalListFileInputNoCompanions)}~{sep=' --optionalListFileInputNoCompanions ' optionalListFileInputNoCompanions} \
+    ~{true='--optionalListFileInputOptionalCompanions ' false='' defined(optionalListFileInputOptionalCompanions)}~{sep=' --optionalListFileInputOptionalCompanions ' optionalListFileInputOptionalCompanions} \
+    ~{true='--optionalListFileInputRequiredCompanions ' false='' defined(optionalListFileInputRequiredCompanions)}~{sep=' --optionalListFileInputRequiredCompanions ' optionalListFileInputRequiredCompanions} \
+    ~{true='--optionalListFileOutputMixedCompanions ' false='' defined(optionalListFileOutputMixedCompanions)}~{sep=' --optionalListFileOutputMixedCompanions ' optionalListFileOutputMixedCompanions} \
+    ~{true='--optionalListFileOutputRequiredCompanions ' false='' defined(optionalListFileOutputRequiredCompanions)}~{sep=' --optionalListFileOutputRequiredCompanions ' optionalListFileOutputRequiredCompanions} \
     ~{true='--optionalListFloatInput ' false='' defined(optionalListFloatInput)}~{sep=' --optionalListFloatInput ' optionalListFloatInput} \
     ~{true='--optionalListIntegerInput ' false='' defined(optionalListIntegerInput)}~{sep=' --optionalListIntegerInput ' optionalListIntegerInput} \
     ~{true='--optionalListLongInput ' false='' defined(optionalListLongInput)}~{sep=' --optionalListLongInput ' optionalListLongInput} \
     ~{true='--optionalListStringInput ' false='' defined(optionalListStringInput)}~{sep=' --optionalListStringInput ' optionalListStringInput} \
     ~{true='--optionalScalarDoubleInput ' false='' defined(optionalScalarDoubleInput)}~{sep=' --optionalScalarDoubleInput ' optionalScalarDoubleInput} \
     ~{true='--optionalScalarDoublePrimitiveInput ' false='' defined(optionalScalarDoublePrimitiveInput)}~{sep=' --optionalScalarDoublePrimitiveInput ' optionalScalarDoublePrimitiveInput} \
-    ~{true='--optionalScalarFileInput ' false='' defined(optionalScalarFileInput)}~{sep=' --optionalScalarFileInput ' optionalScalarFileInput} \
+    ~{true='--optionalScalarFileInputNoCompanions ' false='' defined(optionalScalarFileInputNoCompanions)}~{sep=' --optionalScalarFileInputNoCompanions ' optionalScalarFileInputNoCompanions} \
+    ~{true='--optionalScalarFileInputOptionalCompanions ' false='' defined(optionalScalarFileInputOptionalCompanions)}~{sep=' --optionalScalarFileInputOptionalCompanions ' optionalScalarFileInputOptionalCompanions} \
+    ~{true='--optionalScalarFileInputRequiredCompanions ' false='' defined(optionalScalarFileInputRequiredCompanions)}~{sep=' --optionalScalarFileInputRequiredCompanions ' optionalScalarFileInputRequiredCompanions} \
+    ~{true='--optionalScalarFileOutputNoCompanions ' false='' defined(optionalScalarFileOutputNoCompanions)}~{sep=' --optionalScalarFileOutputNoCompanions ' optionalScalarFileOutputNoCompanions} \
+    ~{true='--optionalScalarFileOutputOptionalCompanions ' false='' defined(optionalScalarFileOutputOptionalCompanions)}~{sep=' --optionalScalarFileOutputOptionalCompanions ' optionalScalarFileOutputOptionalCompanions} \
+    ~{true='--optionalScalarFileOutputRequiredCompanions ' false='' defined(optionalScalarFileOutputRequiredCompanions)}~{sep=' --optionalScalarFileOutputRequiredCompanions ' optionalScalarFileOutputRequiredCompanions} \
     ~{true='--optionalScalarFloatInput ' false='' defined(optionalScalarFloatInput)}~{sep=' --optionalScalarFloatInput ' optionalScalarFloatInput} \
     ~{true='--optionalScalarFloatPrimitiveInput ' false='' defined(optionalScalarFloatPrimitiveInput)}~{sep=' --optionalScalarFloatPrimitiveInput ' optionalScalarFloatPrimitiveInput} \
     ~{true='--optionalScalarIntegerInput ' false='' defined(optionalScalarIntegerInput)}~{sep=' --optionalScalarIntegerInput ' optionalScalarIntegerInput} \
@@ -396,19 +645,36 @@ task TestWDLTool {
 
   output {
     # Task Outputs                                      
-    File TestWDLTool_requiredScalarFileOutput = requiredScalarFileOutput
-    File TestWDLTool_requiredScalarFileOutputDictionary = requiredScalarFileOutputDictionary
-    File TestWDLTool_requiredScalarFileOutputIndex = requiredScalarFileOutputIndex
-    File? TestWDLTool_requiredScalarFileOutputOptionalCompanion = requiredScalarFileOutputOptionalCompanion
-    Array[File] TestWDLTool_requiredListFileOutput = requiredListFileOutput
-    Array[File] TestWDLTool_requiredListFileOutputDictionary = requiredListFileOutputDictionary
-    Array[File] TestWDLTool_requiredListFileOutputIndex = requiredListFileOutputIndex
-    File? TestWDLTool_optionaldScalarFileOutput = optionaldScalarFileOutput
-    File? TestWDLTool_optionalScalarFileOutputDictionary = optionalScalarFileOutputDictionary
-    File? TestWDLTool_optionalScalarFileOutputIndex = optionalScalarFileOutputIndex
-    Array[File]? TestWDLTool_optionaldListFileOutput = optionaldListFileOutput
-    Array[File]? TestWDLTool_optionalListFileOutputDictionary = optionalListFileOutputDictionary
-    Array[File]? TestWDLTool_optionalListFileOutputIndex = optionalListFileOutputIndex
+    File TestWDLTool_requiredScalarFileOutputNoCompanions = requiredScalarFileOutputNoCompanions
+    File TestWDLTool_requiredScalarFileOutputRequiredCompanions = requiredScalarFileOutputRequiredCompanions
+    File TestWDLTool_requiredScalarFileOutputRequiredCompanionsDictionary = requiredScalarFileOutputRequiredCompanionsDictionary
+    File TestWDLTool_requiredScalarFileOutputRequiredCompanionsIndex = requiredScalarFileOutputRequiredCompanionsIndex
+    File TestWDLTool_requiredScalarFileOutputOptionalCompanions = requiredScalarFileOutputOptionalCompanions
+    File? TestWDLTool_requiredScalarFileOutputOptionalCompanionsDictionary = requiredScalarFileOutputOptionalCompanionsDictionary
+    File? TestWDLTool_requiredScalarFileOutputOptionalCompanionsIndex = requiredScalarFileOutputOptionalCompanionsIndex
+    Array[File] TestWDLTool_requiredListFileOutputNoCompanions = requiredListFileOutputNoCompanions
+    Array[File] TestWDLTool_requiredListFileOutputRequiredCompanions = requiredListFileOutputRequiredCompanions
+    Array[File] TestWDLTool_requiredListFileOutputRequiredCompanionsDictionary = requiredListFileOutputRequiredCompanionsDictionary
+    Array[File] TestWDLTool_requiredListFileOutputRequiredCompanionsIndex = requiredListFileOutputRequiredCompanionsIndex
+    Array[File] TestWDLTool_requiredListFileOutputOptionalCompanions = requiredListFileOutputOptionalCompanions
+    Array[File]? TestWDLTool_requiredListFileOutputOptionalCompanionsDictionary = requiredListFileOutputOptionalCompanionsDictionary
+    Array[File]? TestWDLTool_requiredListFileOutputOptionalCompanionsIndex = requiredListFileOutputOptionalCompanionsIndex
+    Array[File] TestWDLTool_requiredListFileOutputMixedCompanions = requiredListFileOutputMixedCompanions
+    Array[File] TestWDLTool_requiredListFileOutputMixedCompanionsRequired = requiredListFileOutputMixedCompanionsRequired
+    Array[File]? TestWDLTool_requiredListFileOutputMixedCompanionsOptional = requiredListFileOutputMixedCompanionsOptional
+    File? TestWDLTool_optionalScalarFileOutputNoCompanions = optionalScalarFileOutputNoCompanions
+    File? TestWDLTool_optionalScalarFileOutputRequiredCompanions = optionalScalarFileOutputRequiredCompanions
+    File? TestWDLTool_optionalScalarFileOutputRequiredCompanionsDictionary = optionalScalarFileOutputRequiredCompanionsDictionary
+    File? TestWDLTool_optionalScalarFileOutputRequiredCompanionsIndex = optionalScalarFileOutputRequiredCompanionsIndex
+    File? TestWDLTool_optionalScalarFileOutputOptionalCompanions = optionalScalarFileOutputOptionalCompanions
+    File? TestWDLTool_optionalScalarFileOutputOptionalCompanionsDictionary = optionalScalarFileOutputOptionalCompanionsDictionary
+    File? TestWDLTool_optionalScalarFileOutputOptionalCompanionsIndex = optionalScalarFileOutputOptionalCompanionsIndex
+    Array[File]? TestWDLTool_optionalListFileOutputRequiredCompanions = optionalListFileOutputRequiredCompanions
+    Array[File]? TestWDLTool_optionalListFileOutputRequiredCompanionsDictionary = optionalListFileOutputRequiredCompanionsDictionary
+    Array[File]? TestWDLTool_optionalListFileOutputRequiredCompanionsIndex = optionalListFileOutputRequiredCompanionsIndex
+    Array[File]? TestWDLTool_optionalListFileOutputMixedCompanions = optionalListFileOutputMixedCompanions
+    Array[File]? TestWDLTool_optionalListFileOutputMixedCompanionsRequired = optionalListFileOutputMixedCompanionsRequired
+    Array[File]? TestWDLTool_optionalListFileOutputMixedCompanionsOptional = optionalListFileOutputMixedCompanionsOptional
   }
 
   parameter_meta {
@@ -435,53 +701,115 @@ task TestWDLTool {
     }
 
     # Required Arguments
-    requiredListFileInput: { description: "requiredListFileInput doc" }
-    requiredListFileInputDictionary: { description: "Companion resource for requiredListFileInput" }
-    requiredListFileInputIndex: { description: "Companion resource for requiredListFileInput" }
-    requiredListFileOutput: { description: "requiredListFileOutput doc" }
-    requiredListFileOutputDictionary: { description: "Companion resource for requiredListFileOutput" }
-    requiredListFileOutputIndex: { description: "Companion resource for requiredListFileOutput" }
-    requiredScalarFileInput: {
-      description: "requiredScalarFileInput doc",
+    requiredListFileInputMixedCompanions: { description: "requiredListFileInputMixedCompanions doc" }
+    requiredListFileInputMixedCompanionsRequired: { description: "Companion resource for requiredListFileInputMixedCompanions" }
+    requiredListFileInputMixedCompanionsOptional: { description: "Companion resource for requiredListFileInputMixedCompanions" }
+    requiredListFileInputNoCompanions: { description: "requiredListFileInputNoCompanions doc" }
+    requiredListFileInputOptionalCompanions: {
+      description: "requiredListFileInputOptionalCompanions doc",
+      localization_optional : true 
+    }
+    requiredListFileInputOptionalCompanionsDictionary: {
+      description: "Companion resource for requiredListFileInputOptionalCompanions",
+      localization_optional : true 
+    }
+    requiredListFileInputOptionalCompanionsIndex: {
+      description: "Companion resource for requiredListFileInputOptionalCompanions",
+      localization_optional : true 
+    }
+    requiredListFileInputRequiredCompanions: {
+      description: "requiredListFileInputRequiredCompanions doc",
+      localization_optional : true 
+    }
+    requiredListFileInputRequiredCompanionsDictionary: {
+      description: "Companion resource for requiredListFileInputRequiredCompanions",
+      localization_optional : true 
+    }
+    requiredListFileInputRequiredCompanionsIndex: {
+      description: "Companion resource for requiredListFileInputRequiredCompanions",
+      localization_optional : true 
+    }
+    requiredListFileOutputMixedCompanions: { description: "requiredListFileOutputMixedCompanions doc" }
+    requiredListFileOutputMixedCompanionsRequired: { description: "Companion resource for requiredListFileOutputMixedCompanions" }
+    requiredListFileOutputMixedCompanionsOptional: { description: "Companion resource for requiredListFileOutputMixedCompanions" }
+    requiredListFileOutputNoCompanions: { description: "requiredListFileOutputNoCompanions doc" }
+    requiredListFileOutputOptionalCompanions: { description: "requiredListFileOutputOptionalCompanions doc" }
+    requiredListFileOutputOptionalCompanionsDictionary: { description: "Companion resource for requiredListFileOutputOptionalCompanions" }
+    requiredListFileOutputOptionalCompanionsIndex: { description: "Companion resource for requiredListFileOutputOptionalCompanions" }
+    requiredListFileOutputRequiredCompanions: { description: "requiredListFileOutputRequiredCompanions doc" }
+    requiredListFileOutputRequiredCompanionsDictionary: { description: "Companion resource for requiredListFileOutputRequiredCompanions" }
+    requiredListFileOutputRequiredCompanionsIndex: { description: "Companion resource for requiredListFileOutputRequiredCompanions" }
+    requiredScalarFileInputNoCompanions: { description: "requiredScalarFileInputNoCompanions doc" }
+    requiredScalarFileInputOptionalCompanions: {
+      description: "requiredScalarFileInputOptionalCompanions doc",
+      localization_optional : true 
+    }
+    requiredScalarFileInputOptionalCompanionsDictionary: {
+      description: "Companion resource for requiredScalarFileInputOptionalCompanions",
+      localization_optional : true 
+    }
+    requiredScalarFileInputOptionalCompanionsIndex: {
+      description: "Companion resource for requiredScalarFileInputOptionalCompanions",
       localization_optional : true 
     }
-    requiredScalarFileInputDictionary: {
-      description: "Companion resource for requiredScalarFileInput",
+    requiredScalarFileInputRequiredCompanions: {
+      description: "requiredScalarFileInputRequiredCompanions doc",
       localization_optional : true 
     }
-    requiredScalarFileInputIndex: {
-      description: "Companion resource for requiredScalarFileInput",
+    requiredScalarFileInputRequiredCompanionsDictionary: {
+      description: "Companion resource for requiredScalarFileInputRequiredCompanions",
       localization_optional : true 
     }
-    requiredScalarFileInputOptionalCompanion: {
-      description: "Companion resource for requiredScalarFileInput",
+    requiredScalarFileInputRequiredCompanionsIndex: {
+      description: "Companion resource for requiredScalarFileInputRequiredCompanions",
       localization_optional : true 
     }
-    requiredScalarFileOutput: { description: "requiredScalarFileOutput doc" }
-    requiredScalarFileOutputDictionary: { description: "Companion resource for requiredScalarFileOutput" }
-    requiredScalarFileOutputIndex: { description: "Companion resource for requiredScalarFileOutput" }
-    requiredScalarFileOutputOptionalCompanion: { description: "Companion resource for requiredScalarFileOutput" }
+    requiredScalarFileOutputNoCompanions: { description: "requiredScalarFileOutputNoCompanions doc" }
+    requiredScalarFileOutputOptionalCompanions: { description: "requiredScalarFileOutputOptionalCompanions doc" }
+    requiredScalarFileOutputOptionalCompanionsDictionary: { description: "Companion resource for requiredScalarFileOutputOptionalCompanions" }
+    requiredScalarFileOutputOptionalCompanionsIndex: { description: "Companion resource for requiredScalarFileOutputOptionalCompanions" }
+    requiredScalarFileOutputRequiredCompanions: { description: "requiredScalarFileOutputRequiredCompanions doc" }
+    requiredScalarFileOutputRequiredCompanionsDictionary: { description: "Companion resource for requiredScalarFileOutputRequiredCompanions" }
+    requiredScalarFileOutputRequiredCompanionsIndex: { description: "Companion resource for requiredScalarFileOutputRequiredCompanions" }
 
     # Optional Tool Arguments
-    optionaldListFileOutput: { description: "optionalListFileOutput doc" }
-    optionalListFileOutputDictionary: { description: "Companion resource for optionaldListFileOutput" }
-    optionalListFileOutputIndex: { description: "Companion resource for optionaldListFileOutput" }
-    optionaldScalarFileOutput: { description: "optionalScalarFileOutput doc" }
-    optionalScalarFileOutputDictionary: { description: "Companion resource for optionaldScalarFileOutput" }
-    optionalScalarFileOutputIndex: { description: "Companion resource for optionaldScalarFileOutput" }
     optionalListDoubleInput: { description: "optionalListDoubleInput doc" }
-    optionalListFileInput: { description: "optionalListFileInput doc" }
-    optionalListFileInputDictionary: { description: "Companion resource for optionalListFileInput" }
-    optionalListFileInputIndex: { description: "Companion resource for optionalListFileInput" }
+    optionalListFileInputMixedCompanions: { description: "optionalListFileInputMixedCompanions doc" }
+    optionalListFileInputMixedCompanionsRequired: { description: "Companion resource for optionalListFileInputMixedCompanions" }
+    optionalListFileInputMixedCompanionsOptional: { description: "Companion resource for optionalListFileInputMixedCompanions" }
+    optionalListFileInputNoCompanions: { description: "optionalListFileInputNoCompanions doc" }
+    optionalListFileInputOptionalCompanions: { description: "optionalListFileInputOptionalCompanions doc" }
+    optionalListFileInputOptionalCompanionsDictionary: { description: "Companion resource for optionalListFileInputOptionalCompanions" }
+    optionalListFileInputOptionalCompanionsIndex: { description: "Companion resource for optionalListFileInputOptionalCompanions" }
+    optionalListFileInputRequiredCompanions: { description: "optionalListFileInputRequiredCompanions doc" }
+    optionalListFileInputRequiredCompanionsDictionary: { description: "Companion resource for optionalListFileInputRequiredCompanions" }
+    optionalListFileInputRequiredCompanionsIndex: { description: "Companion resource for optionalListFileInputRequiredCompanions" }
+    optionalListFileOutputMixedCompanions: { description: "optionalListFileOutputMixedCompanions doc" }
+    optionalListFileOutputMixedCompanionsRequired: { description: "Companion resource for optionalListFileOutputMixedCompanions" }
+    optionalListFileOutputMixedCompanionsOptional: { description: "Companion resource for optionalListFileOutputMixedCompanions" }
+    optionalListFileOutputRequiredCompanions: { description: "optionalListFileOutputRequiredCompanions doc" }
+    optionalListFileOutputRequiredCompanionsDictionary: { description: "Companion resource for optionalListFileOutputRequiredCompanions" }
+    optionalListFileOutputRequiredCompanionsIndex: { description: "Companion resource for optionalListFileOutputRequiredCompanions" }
     optionalListFloatInput: { description: "optionalListFloatInput doc" }
     optionalListIntegerInput: { description: "optionalListIntegerInput doc" }
     optionalListLongInput: { description: "optionalListLongInput doc" }
     optionalListStringInput: { description: "optionalListStringInput doc" }
     optionalScalarDoubleInput: { description: "optionalScalarDoubleInput doc" }
     optionalScalarDoublePrimitiveInput: { description: "optionalScalarDoublePrimitiveInput doc" }
-    optionalScalarFileInput: { description: "optionalScalarFileInput doc" }
-    optionalScalarFileInputDictionary: { description: "Companion resource for optionalScalarFileInput" }
-    optionalScalarFileInputIndex: { description: "Companion resource for optionalScalarFileInput" }
+    optionalScalarFileInputNoCompanions: { description: "optionalScalarFileInputNoCompanions doc" }
+    optionalScalarFileInputOptionalCompanions: { description: "optionalScalarFileInputOptionalCompanions doc" }
+    optionalScalarFileInputOptionalCompanionsDictionary: { description: "Companion resource for optionalScalarFileInputOptionalCompanions" }
+    optionalScalarFileInputOptionalCompanionsIndex: { description: "Companion resource for optionalScalarFileInputOptionalCompanions" }
+    optionalScalarFileInputRequiredCompanions: { description: "optionalScalarFileInputRequiredCompanions doc" }
+    optionalScalarFileInputRequiredCompanionsDictionary: { description: "Companion resource for optionalScalarFileInputRequiredCompanions" }
+    optionalScalarFileInputRequiredCompanionsIndex: { description: "Companion resource for optionalScalarFileInputRequiredCompanions" }
+    optionalScalarFileOutputNoCompanions: { description: "optionalScalarFileOutputNoCompanions doc" }
+    optionalScalarFileOutputOptionalCompanions: { description: "optionalScalarFileOutputOptionalCompanions doc" }
+    optionalScalarFileOutputOptionalCompanionsDictionary: { description: "Companion resource for optionalScalarFileOutputOptionalCompanions" }
+    optionalScalarFileOutputOptionalCompanionsIndex: { description: "Companion resource for optionalScalarFileOutputOptionalCompanions" }
+    optionalScalarFileOutputRequiredCompanions: { description: "optionalScalarFileOutputRequiredCompanions doc" }
+    optionalScalarFileOutputRequiredCompanionsDictionary: { description: "Companion resource for optionalScalarFileOutputRequiredCompanions" }
+    optionalScalarFileOutputRequiredCompanionsIndex: { description: "Companion resource for optionalScalarFileOutputRequiredCompanions" }
     optionalScalarFloatInput: { description: "optionalScalarFloatInput doc" }
     optionalScalarFloatPrimitiveInput: { description: "optionalScalarFloatPrimitiveInput doc" }
     optionalScalarIntegerInput: { description: "optionalScalarIntegerInput doc" }