Hi guys. I need a category expert to explain why we have the following:

Class >> category
"Answer the system organization category for the receiver. First check whether the
category name stored in the ivar is still correct and only if this fails look it up
(latter is much more expensive)"

| result |
self basicCategory ifNotNil: [ :symbol |
((self environment organization listAtCategoryNamed: symbol) includes: self name)
ifTrue: [ ^symbol ] ].
self basicCategory: (result := self environment organization categoryOfElement: self name).
^result


So...how can a class store an "incorrect" category? �
Or in other words.... can

PackageInfo >> includesClass: aClass
^ self includesSystemCategory: aClass theNonMetaClass category

use #basicCategory (simple accessor) rather than #category?�

thanks,

--
Mariano
http://marianopeck.wordpress.com