I'm confused abou this spec, shouldn't the first arg be `tuple()` because it can handle any object rec type?
```
-spec list(tuple(), fun((atom(), list(), [atom()]) -> {ok, none | list()} | {error, _})) -> {ok, none | list()} | {error, _})
```