Generic user-defined types would unblock a lot of library data structure functionality and more. Related: #491 and #503