       iex> OptionParser.parse(["--unlock", "path/to/file", "--unlock", "path/to/another/file"], strict: [unlock: :keep])
       {[unlock: "path/to/file", unlock: "path/to/another/file"], [], []}
 
-  ## Negation switches
+  ### Negation switches
 
   In case a switch is declared as boolean, it may be passed as `--no-SWITCH`
   which will set the option to `false`:

  end

  defp validate_option(value, kinds) do
    {is_invalid, value} = cond do
      :invalid in kinds ->
        {true, value}
      :boolean in kinds ->
        case value do
          t when t in [true, "true"] -> {nil, true}
          f when f in [false, "false"] -> {nil, false}
          _ -> {true, value}
        end
      :count in kinds ->
        case value do
          1 -> {nil, value}
          _ -> {true, value}
        end
      :integer in kinds ->
        case Integer.parse(value) do
          {value, ""} -> {nil, value}
          _ -> {true, value}
        end
      :float in kinds ->
        case Float.parse(value) do
          {value, ""} -> {nil, value}
          _ -> {true, value}
        end
      true ->
        {nil, value}
    end

    if is_invalid do
      :invalid
    else
      {:ok, value}

  defp do_store_option(dict, option, value, kinds) do
    cond do
      :count in kinds ->
        Keyword.update(dict, option, value, & &1 + 1)
      :keep in kinds ->
        [{option, value} | dict]
      true ->
