 
   defp reduce(value, acc, path, fun), do: fun.(value, acc, path)
 
-  @doc """
-  TODO
-  """
+  # Returns a schema tree where each schema is the result of invoking `fun` on
+  # each schema. The function gets also the current `ìd` for the schema. The
+  # `id` could be `nil` or a `%URI{}` struct.
+  @doc false
   @spec map(Schema.t(), function) :: Schema.t() | Ref.t()
-  def map(schema, fun) do
-    map(schema, fun, nil)
-  end
+  def map(schema, fun), do: map(schema, fun, nil)
 
   defp map(%Schema{} = schema, fun, id) do
     id = Utils.update_uri(id, schema.id)

        )
      end

      def new(data),
        do:
          data
          |> init()
          |> new()

      @doc """
      Returns true if the `value` is a valid value against the given `schema`;
      otherwise returns false.

      ## Examples


      def valid?(schema, value), do: validate(schema, value) == :ok

      @doc """
      Returns `true` if the `value` is a valid value against the given `schema`;
      otherwise returns `false`.
      """
      @deprecated "Use valid? instead"
      @spec is_valid?(__MODULE__.t(), any) :: boolean
