   """
 
   @doc """
-  Parses `argv` and returns a tuple with parsed options
-  and arguments.
+  Parses `argv` and returns a tuple with the parsed options, its
+  arguments, and a list options that couldn't be parsed.
 
   ## Examples
 
       iex> OptionParser.parse(["--debug"])
-      { [debug: true], [] }
+      { [debug: true], [], [] }
 
       iex> OptionParser.parse(["--source", "lib"])
-      { [source: "lib"], [] }
+      { [source: "lib"], [], [] }
 
       iex> OptionParser.parse(["--source-path", "lib", "test/enum_test.exs", "--verbose"])
-      { [source_path: "lib", verbose: true], ["test/enum_test.exs"] }
+      { [source_path: "lib", verbose: true], ["test/enum_test.exs"], [] }
 
   Notice how Elixir automatically translates the "--source-path"
   switch to the underscored atom `:source_path`, which better follows

  Examples:

      iex> OptionParser.parse(["--unlock", "path/to/file"], switches: [unlock: :boolean])
      { [unlock: true], ["path/to/file"] }

      iex> OptionParser.parse(["--unlock", "--limit", "0", "path/to/file"],
      ...>                    switches: [unlock: :boolean, limit: :integer])
      { [unlock: true, limit: 0], ["path/to/file"] }

      iex> OptionParser.parse(["-limit", "3"], switches: [limit: :integer])
      { [limit: 3], [] }

      iex> OptionParser.parse(["-limit", "yyz"], switches: [limit: :integer])
      { [], [], [limit: "yyz"] }

  A set of aliases can be given as the second argument:

      iex> OptionParser.parse(["-d"], aliases: [d: :debug])
      { [debug: true], [], [] }

  ## Switches

