 
   @doc ~S"""
   Inspects the given argument according to the `Inspect` protocol.
-  The second argument is a keywords list with options to control
+  The second argument is a keyword list with options to control
   inspection.
 
   ## Options

      iex> "foo" <> "bar"
      "foobar"

  The `<>` operator can also be used in guard clauses as
  long as the first part is a literal binary:

      iex> "foo" <> x = "foobar"
      iex> x
      "bar"

  """
  defmacro left <> right do
    concats = extract_concatenations({:<>, [], [left, right]})
    quote do: << unquote_splicing(concats) >>
  end

  # Extracts concatenations in order to optimize many

  end

  @doc """
  Boolean and.

  If the first argument is `false`, `false` is returned; otherwise, the second
  argument is returned.

  Requires only the first argument to be a boolean since it short-circuits. If
  the first argument is not a boolean, an `ArgumentError` exception is raised.

  Allowed in guard tests.

