# File lib/sfl.rb, line 13
  def initialize(*cmdandarg)
    raise ArgumentError if cmdandarg.size == 0
    cmdandarg = cmdandarg.dup

    @environment =
      if Hash === cmdandarg.first
        cmdandarg.shift
      else
        {}
      end

    @option =
      if Hash === cmdandarg.last
        cmdandarg.pop
      else
        {}
      end

    if cmdandarg.size == 1
      cmdandarg = cmdandarg.first
      if String === cmdandarg
        if SHELL_SPECIALS === cmdandarg
          @command = cmdandarg
          @argument = []
        else
          cmd, *arg = self.class.parse_command_with_arg(cmdandarg)
          @command = [cmd, cmd]
          @argument = arg
        end
      else
        @command = cmdandarg
        @argument = []
      end
    else
      # 'ls', '.' -> [['ls', 'ls'], '.']
      cmd = cmdandarg.shift
      cmd = (String === cmd) ? [cmd, cmd] : cmd
      @command = cmd
      @argument = cmdandarg
    end
  end