docs: def fix_argument_only(self):
          '''
          fix_argument_only() -> Either or Unit(Argument)
          `<arg> | ARG | <arg3>` ->
              `Required(Argument('<arg>', 'ARG', '<arg3>'))`
          `[<arg>] | [ARG] | [<arg3>]` ->
              `Optional(Argument('<arg>', 'ARG', '<arg3>'))`
          `(<arg>) | [ARG]` -> not change, return self
          `-a | --better` -> not change
          '''
          # for idx, branch in enumerate(self):
          #     if isinstance(branch[0], Either):
          #         self[idx] = branch.fix()
          first_type = type(self[0])
          if first_type not in (Required, Optional):
              return self
          for branch in self:
              if not (len(branch) == 1 and
                      isinstance(branch, first_type) and
                      isinstance(branch[0], Argument)):
                  logger.debug('fix %r not change', self)
                  return self
          else:
              first = self[0][0]
              for each in self:
                  first.names.update(each[0].names)
              result = first_type(first)
              logger.debug('fix %r -> %r', self, result)
              return result