=item I<required =E<gt> (1|0)>
-This marks the attribute as being required. This means a I<defined> value must be
-supplied during class construction, and the attribute may never be set to
-C<undef> with an accessor.
+This marks the attribute as being required. This means a value must be
+supplied during class construction or be lazy with either a default or a
+builder. Note that c<required> does not say anything about the attribute's
+value, so it could be C<undef>.
+
=item I<weak_ref =E<gt> (1|0)>
There are a couple caveats worth mentioning in regards to what
"required" actually means.
-Basically, all it says is that this attribute (C<name>) must be provided
-to the constructor. It does not say anything about its value, so it
-could be C<undef>.
+Basically, all it says is that this attribute (C<name>) must be provided to
+the constructor, or be lazy with either a default or a builder. It does not
+say anything about its value, so it could be C<undef>.
If you define a clearer method on a required attribute, the clearer
I<will> work, so even a required attribute can be unset after object