payload :: any
t :: tree_node
tree_node :: {payload, %{optional(any) => tree_node}} | {payload, [tree_node]} | {payload, tuple} | {payload}