Why is everything in this example so _extremely parametrised_? Why not just `public interface User extends Node<User, User.Type>` as it was above?
Same for the `id` property and other stuff.