 
   Currently the only accepted process is self().
   """
+  @spec enable(pid) :: :ok
   def enable(pid) when pid == self() do
     Process.put(@metadata, {true, metadata()})
     :ok

  @type backend :: :gen_event.handler
  @type message :: IO.chardata | String.Chars.t
  @type level :: :error | :info | :warn | :debug
  @levels [:error, :info, :warn, :debug]

  @metadata :logger_metadata

  This will merge the given keyword list into the existing metadata. With
  the exception of setting a key to nil will remove a key from the metadata.
  """
  @spec metadata(metadata) :: :ok
  def metadata(keywords) do
    {enabled?, metadata} = __metadata__()
    metadata =
