The exact semantics and interface of TYPE [is] still evolving. TYPE may be a bareword, a constant declared with "use constant", or "__PACKAGE__". It is currently bound to the use of the fields pragma