From Moose...
required => (1|0)
This marks the attribute as being required. This means a value
must be supplied during class construction, or the attribute
must be lazy and have either a default or a builder. Note that
c<required> does not say anything about the attribute's value,
which can be "undef".