@spec any(Keyword.t()) :: map()
@spec atom(Keyword.t()) :: map()
@spec boolean(Keyword.t()) :: map()
@spec decode(map(), any(), Keyword.t()) :: {:ok, any()} | {:error, binary() | list()}
@spec integer(Keyword.t()) :: map() | {:error, binary()}
@spec list(map(), Keyword.t()) :: map() | {:error, binary()}
@spec list(any(), any()) :: {:error, binary()}
@spec literal(any(), Keyword.t()) :: map() | {:error, binary()}
@spec map(map(), Keyword.t()) :: map() | {:error, binary()}
@spec map(any(), any()) :: {:error, binary()}
@spec nil!(Keyword.t()) :: map()
@spec optional(map()) :: map() | {:error, binary()}
@spec optional(any()) :: {:error, binary()}
@spec record(map(), map(), Keyword.t()) :: map() | {:error, binary()}
@spec record(any(), any(), any()) :: {:error, binary()}
@spec string() :: map()
@spec string(Regex.t()) :: map() | {:error, binary()}
@spec string(any()) :: {:error, binary()}
@spec string(Regex.t(), Keyword.t()) :: map() | {:error, binary()}
@spec string(any(), any()) :: {:error, binary()}
@spec tuple(list(), Keyword.t()) :: map() | {:error, binary()}
@spec tuple(any(), any()) :: {:error, binary()}
@spec union([map()], Keyword.t()) :: map() | {:error, binary()}
@spec union(any(), any()) :: {:error, binary()}