/** Corresponds to <element name="nativeExecutable"> */
  private Element createNativeExecutableElement(Document doc, NativeTask t) {
    Element nativeExecE =
        doc.createElementNS(
            Schemas.SCHEMA_LATEST.namespace, XMLTags.NATIVE_EXECUTABLE.getXMLName());

    // <choice>
    // <ref name="staticCommand"/>
    // <ref name="dynamicCommand"/>
    // </choice>
    String[] cmd = t.getCommandLine();
    if (cmd != null && cmd.length > 0) {
      // <element name="staticCommand">
      Element staticCmdE =
          doc.createElementNS(
              Schemas.SCHEMA_LATEST.namespace, XMLTags.NATIVE_TASK_STATIC_COMMAND.getXMLName());
      setAttribute(staticCmdE, XMLAttributes.TASK_COMMAND_VALUE, cmd[0], true);

      // <ref name="commandArguments"/>
      if (cmd.length > 1) {
        // <element name="arguments">
        Element argsE =
            doc.createElementNS(
                Schemas.SCHEMA_LATEST.namespace, XMLTags.NATIVE_TASK_ARGUMENTS.getXMLName());
        for (int i = 1; i < cmd.length; i++) {
          // <element name="argument">
          Element argE =
              doc.createElementNS(
                  Schemas.SCHEMA_LATEST.namespace, XMLTags.NATIVE_TASK_ARGUMENT.getXMLName());
          setAttribute(argE, XMLAttributes.COMMON_VALUE, cmd[i], true);
          argsE.appendChild(argE);
        }
        staticCmdE.appendChild(argsE);
      }
      nativeExecE.appendChild(staticCmdE);
    } else {
      logger.error("The task " + t.getName() + " does not define a command");
    }

    return nativeExecE;
  }