As far as I understand, "nil" is just the name for a type. There is no
difference if you changethe name from "nil" to "int", "float". There is
no predefined type.
In order to create your own type, you need to do three things, create
the type, create the type constraint and bind the constraint to the