custom() :: term()
portable() :: :public | :private
t() :: portable() | custom()
guard_portable(any()) :: {:ok, portable()} | :error
portable?(any()) :: boolean()