This will attempt to coerce the value to the type. If the type does
have any defined coercions this will throw an error.
+If no coercion can produce a value matching C<$constraint>, the original
+value is returned.
+
+=item B<< $constraint->assert_coerce($value >>
+
+This method behaves just like C<coerce>, but if the result is not valid
+according to C<$constraint>, an error is thrown.
+
=item B<< $constraint->check($value) >>
Returns true if the given value passes the constraint for the type.