For traits, requirements were programmatically inferred instead of
using #explicitRequirement.
In the original traits implementation, inference of requirements was necessarily incomplete. For example, if a method says
self add: x
or
self class new: n
we would infer a requirement of add: n the instance side and new: on the class side. However, if the method said
self copyEmpty add: x
we would not infer a requirement of add:
In these cases we included a method definition
add: anObject
self explicitRequirement
to tell the tools that add: was a required method. We used this very rarely, since most of the time the inference of required methods worked very well.
Andrew