sweet queries :)
>> Then we can now have more compact versions of
>
> FreeTypeSettings LabelMorph MorphTreeNodeMorph MorphTreeListManager
> ThemeSettings MultistateButtonMorph PharoUserPermissions
> SimpleHierarchicalListMorph Nautilus class SpecTreeColumn
> PluggableIconListMorph MorphTreeMorph Workspace CompositionScanner Paragraph
> MethodOveridesAction HandMorph TextComposer ScrollBar NECContext
> MultiByteFileStream NewValueHolder DynamicClassGroup SearchMorph
> NautilusHistoryEntry PluggableTextFieldMorph PluggableListMorph
> TableLayoutProperties DynamicGroup DropListMorph GradientFillStyle
> PackageTreeNautilus PluggableTextMorphWithLimits NECUntypedModel
> BalloonEngine MetacelloPharo30Platform SystemWindow NautilusWindow
> NECPreferences class EditorFindReplaceDialogWindow GoBackStringMorph
> NautilusHistoryEntryWithSourceCode MCCacheRepository PluggableButtonMorph
> AlphaImageMorph PluggableTextMorph RxMatcher MorphExtension
> TextMorphForFieldView MorphTreeColumn FindReplaceService CheckboxMorph
> TextMorphForEditView IndentingListItemMorph ControlButtonMorph
> CheckboxButtonMorph
>
> with multiple booleans mapped to one instVar
>
>
> |set|
> set := IdentitySet new.
> Object allSubclasses do: [ :aClass |
> |varSize coll nr candidate |
> candidate := false.
> varSize := aClass instSize.
> coll := aClass allInstances.
> nr := 10 min: coll size.
> (coll first: nr) do: [ :anInstance |
> |value nrBoolean|
> nrBoolean := 0.
> 1 to: varSize do: [ :varIndex |
> value := anInstance instVarAt: varIndex.
> value class = True ifTrue: [ nrBoolean := nrBoolean + 1
> ].
> value class = False ifTrue: [ nrBoolean := nrBoolean +
> 1 ]].
> nrBoolean >1 ifTrue: [ candidate := true ] ].
> candidate ifTrue: [ set add: aClass ]].
> set.
>
>