   @typedoc "A full match spec used when selecting objects in the registry"
   @type spec :: [{match_pattern, guards, body}]
 
+  @typedoc "Options used for `child_spec/1` and `start_link/1`"
+  @type start_option ::
+          {:keys, keys}
+          | {:name, registry}
+          | {:partitions, pos_integer}
+          | {:listeners, [atom]}
+          | {:meta, [{meta_key, meta_value}]}
+
   ## Via callbacks
 
   @doc false

  See `Supervisor`.
  """
  @doc since: "1.5.0"
  def child_spec(opts) do
    %{
      id: Keyword.get(opts, :name, Registry),
      start: {Registry, :start_link, [opts]},
      type: :supervisor
    }
  end


  """
  @doc since: "1.5.0"
  @spec start_link([start_option]) :: {:ok, pid} | {:error, term}
  def start_link(options) do
    keys = Keyword.get(options, :keys)

