'From Pharo3.0 of 18 March 2013 [Latest update: #30248] on 3 July 2013 at 10:00:32 pm'! Object subclass: #TraitBehavior uses: TBehavior + (TPureBehavior @ {#pureRemoveSelector:->#removeSelector:. #pureAddSelectorSilently:withMethod:->#addSelectorSilently:withMethod:}) instanceVariableNames: 'methodDict traitComposition localSelectors users ' classVariableNames: '' poolDictionaries: '' category: 'Traits-Kernel'! TraitBehavior subclass: #TraitDescription uses: TClassDescription + TComposingDescription + TTransformationCompatibility instanceVariableNames: 'organization ' classVariableNames: '' poolDictionaries: '' category: 'Traits-Kernel'! !TraitBehavior methodsFor: 'naming' stamp: 'SebastianTleye 7/3/2013 17:23'! name ^ self explicitRequirement! ! !TraitBehavior methodsFor: 'naming' stamp: 'SebastianTleye 7/3/2013 17:23'! name ^ self explicitRequirement! ! TraitDescription class removeSelector: #canZapMethodDictionary! TraitDescription class removeSelector: #cleanUp! TraitDescription removeSelector: #addAuthorsTo:! TraitDescription removeSelector: #allInstVarNamesEverywhere! TraitDescription removeSelector: #allMethodCategoriesIntegratedThrough:! TraitDescription removeSelector: #allSharedPools! TraitDescription removeSelector: #authors! TraitDescription removeSelector: #checkForInstVarsOK:! TraitDescription removeSelector: #classThatDefinesClassVariable:! TraitDescription removeSelector: #classThatDefinesInstanceVariable:! TraitDescription removeSelector: #classVariablesString! TraitDescription removeSelector: #classVersion! TraitDescription removeSelector: #classesThatImplementAllOf:! TraitDescription removeSelector: #commentInventory! TraitDescription removeSelector: #forceNewFrom:! TraitDescription removeSelector: #hasInstVarNamed:! TraitDescription removeSelector: #hasSharedPools! TraitDescription removeSelector: #instVarIndexFor:! TraitDescription removeSelector: #instVarIndexFor:ifAbsent:! TraitDescription removeSelector: #instVarMappingFrom:! TraitDescription removeSelector: #instVarNameForIndex:! TraitDescription removeSelector: #instVarNames! TraitDescription removeSelector: #instVarNamesAndOffsetsDo:! TraitDescription removeSelector: #instanceVariablesString! TraitDescription removeSelector: #newInstanceFrom:variable:size:map:! TraitDescription removeSelector: #notifyRepackage:method:oldProtocol:newProtocol:! TraitDescription removeSelector: #printSubclassesOn:level:! TraitDescription removeSelector: #setInstVarNames:! TraitDescription removeSelector: #sharedPoolOfVarNamed:! TraitDescription removeSelector: #sharedPoolsString! TraitDescription removeSelector: #subclasses! TraitDescription removeSelector: #subclassesDo:! TraitDescription removeSelector: #superclass:methodDictionary:format:! TraitDescription removeSelector: #updateInstances:from:isMeta:! TraitDescription removeSelector: #updateInstancesFrom:! TraitDescription removeSelector: #updateOrganizationDescription:oldCategory:newCategory:changedCategories:! TraitDescription removeSelector: #usesLocalPoolVarNamed:! TraitDescription removeSelector: #usesPoolVarNamed:! TraitBehavior class removeSelector: #canZapMethodDictionary! TraitBehavior class removeSelector: #cleanUp! TraitBehavior removeSelector: #addObsoleteSubclass:! TraitBehavior removeSelector: #adoptInstance:! TraitBehavior removeSelector: #allInstances! TraitBehavior removeSelector: #allInstancesDo:! TraitBehavior removeSelector: #allLocalCallsOn:! TraitBehavior removeSelector: #allMethods! TraitBehavior removeSelector: #allSelectorsAbove! TraitBehavior removeSelector: #allSelectorsAboveUntil:! TraitBehavior removeSelector: #allSelectorsBelow:! TraitBehavior removeSelector: #allSelectorsWithout:! TraitBehavior removeSelector: #allSharedPools! TraitBehavior removeSelector: #allSubInstances! TraitBehavior removeSelector: #allSubInstancesDo:! TraitBehavior removeSelector: #allSubclassesWithLevelDo:startingLevel:! TraitBehavior removeSelector: #allSuperclassesIncluding:! TraitBehavior removeSelector: #allUnreferencedInstanceVariables! TraitBehavior removeSelector: #allowsSubInstVars! TraitBehavior removeSelector: #basicNew! TraitBehavior removeSelector: #basicNew:! TraitBehavior removeSelector: #becomeCompact! TraitBehavior removeSelector: #becomeCompactSimplyAt:! TraitBehavior removeSelector: #becomeUncompact! TraitBehavior removeSelector: #canPerform:! TraitBehavior removeSelector: #checkCanBeUncompact! TraitBehavior removeSelector: #classBindingOf:! TraitBehavior removeSelector: #classDepth! TraitBehavior removeSelector: #cleanUp! TraitBehavior removeSelector: #cleanUp:! TraitBehavior removeSelector: #commentsAt:! TraitBehavior removeSelector: #commentsIn:! TraitBehavior removeSelector: #copiedFromSuperclass:! TraitBehavior removeSelector: #copiedMethodsFromSuperclass! TraitBehavior removeSelector: #copiesFromSuperclass:! TraitBehavior removeSelector: #copiesMethodsFromSuperclass! TraitBehavior removeSelector: #flushCache! TraitBehavior removeSelector: #hasAbstractMethods! TraitBehavior removeSelector: #includesSharedPoolNamed:! TraitBehavior removeSelector: #indexIfCompact! TraitBehavior removeSelector: #instSpec! TraitBehavior removeSelector: #instVarNamesAndOffsetsDo:! TraitBehavior removeSelector: #instanceCount! TraitBehavior removeSelector: #instancesSizeInMemory! TraitBehavior removeSelector: #isAnonymous! TraitBehavior removeSelector: #isBits! TraitBehavior removeSelector: #isBytes! TraitBehavior removeSelector: #isCompact! TraitBehavior removeSelector: #isFixed! TraitBehavior removeSelector: #isMeta! TraitBehavior removeSelector: #isObsolete! TraitBehavior removeSelector: #isPointers! TraitBehavior removeSelector: #isVariable! TraitBehavior removeSelector: #isWeak! TraitBehavior removeSelector: #isWords! TraitBehavior removeSelector: #kindOfSubclass! TraitBehavior removeSelector: #new! TraitBehavior removeSelector: #new:! TraitBehavior removeSelector: #nextQuotePosIn:startingFrom:! TraitBehavior removeSelector: #nonObsoleteClass! TraitBehavior removeSelector: #numberOfInstanceVariables! TraitBehavior removeSelector: #obsoleteSubclasses! TraitBehavior removeSelector: #printHierarchy! TraitBehavior removeSelector: #printOn:! TraitBehavior removeSelector: #removeAllObsoleteSubclasses! TraitBehavior removeSelector: #removeObsoleteSubclass:! TraitBehavior removeSelector: #selectSubclasses:! TraitBehavior removeSelector: #selectSuperclasses:! TraitBehavior removeSelector: #shouldNotBeRedefined! TraitBehavior removeSelector: #shutDown! TraitBehavior removeSelector: #shutDown:! TraitBehavior removeSelector: #someInstance! TraitBehavior removeSelector: #sourceMatchesBytecodeAt:! TraitBehavior removeSelector: #startUp! TraitBehavior removeSelector: #startUp:! TraitBehavior removeSelector: #subclassInstVarNames! TraitBehavior removeSelector: #subclassesDo:! TraitBehavior removeSelector: #superclass:methodDictionary:format:! TraitBehavior removeSelector: #supermostPrecodeCommentFor:! TraitBehavior removeSelector: #typeOfClass! TraitBehavior removeSelector: #unreferencedInstanceVariables! TraitBehavior removeSelector: #variablesAndOffsetsDo:! TraitBehavior removeSelector: #whichClassDefinesClassVar:! TraitBehavior removeSelector: #whichClassDefinesInstVar:! TraitBehavior removeSelector: #whichSelectorsAccess:! TraitBehavior removeSelector: #whichSelectorsAssign:! TraitBehavior removeSelector: #whichSelectorsRead:! TraitBehavior removeSelector: #whichSelectorsStoreInto:! TraitBehavior removeSelector: #whichSuperclassSatisfies:! TraitBehavior removeSelector: #withAllSubAndSuperclassesDo:! TraitBehavior removeSelector: #withAllSuperAndSubclassesDo:! TraitBehavior removeSelector: #withAllSuperclassesDo:! !TraitBehavior reorganize! (#'*Compiler-Kernel' bindingOf: parserClass recompile: binding recompileChanges compile: recompile:from: defaultMethodTrailer compilerClass compile:notifying: compileAllFrom: evaluate: evaluatorClass compileAll decompilerClass sourceCodeTemplate compiler) (#'*Tools-Browser' browse) (#traits traits flattenDownAllTraits traitComposition: addTraitSelector:withMethod: users flattenDown: classesComposedWithMe traitsProvidingSelector: traitOrClassOfSelector: notifyUsersOfChangedSelector: removeUser: traitCompositionIncludes: updateMethodDictionarySelector: purgeLocalSelectors traitComposition noteChangedSelectors: removeFromComposition: traitTransformations hasTraitComposition traitCompositionString removeTraitSelector: setTraitComposition: notifyUsersOfChangedSelectors: removeFromTraitCompositionOfUsers ensureLocalSelectors applyChangesOfNewTraitCompositionReplacing: setTraitCompositionFrom: addUser: addToComposition: addExclusionOf:to: removeAlias:of:) (#copying deepCopy copyOfMethodDictionary postCopy) (#'*Rpackage-Core' originalName) (#naming environment name) (#'initialize-release' initialize nonObsoleteClass superclass:methodDictionary:format:) (#testing isObsolete includesBehavior: isBytes isTrait isAnonymous isBits hasAbstractMethods canZapMethodDictionary isCompact isWeak isPointers isComposedBy: isWords isMeta shouldNotBeRedefined isVariable isFixed sourceMatchesBytecodeAt: instSpec) (#'accessing method dictionary' addSelectorSilently:withMethod: compiledMethodAt:ifAbsent: allMethods selectors deregisterLocalSelector: methodDict: sourceCodeAt: methodDictionary compress allSelectorsAboveUntil: allSelectorsBelow: basicLocalSelectors registerLocalSelector: removeSelector: lookupSelector: methodDict >> selectorsWithArgs: methodDictionary: allSelectorsAbove changeRecordsAt: basicLocalSelectors: supermostPrecodeCommentFor: nextQuotePosIn:startingFrom: methods firstCommentAt: selectorsAndMethodsDo: sourceCodeAt:ifAbsent: zapAllMethods allSelectorsWithout: compiledMethodAt: classAndMethodFor:do:ifAbsent: firstPrecodeCommentFor: precodeCommentOrInheritedCommentFor: commentsAt: commentsIn: selectorsDo: methodsDo: allSelectors ultimateSourceCodeAt:ifAbsent:) (#'remove me later' classPool sharedPools) (#'testing method dictionary' thoroughHasSelectorReferringTo:special:byte: isLocalAliasSelector: classBindingOf: canUnderstand: isDisabledSelector: thoroughWhichSelectorsReferTo:special:byte: includesLocalSelector: hasMethods whichSelectorsReferTo:special:byte: whichSelectorsStoreInto: whichSelectorsAccess: whichSelectorsReferTo: canPerform: isAliasSelector: includesSelector:) ('instance creation' new basicNew new: basicNew:) ('enumerating' selectSubclasses: subclassesDo: withAllSuperAndSubclassesDo: allSubInstancesDo: allUnreferencedInstanceVariables selectSuperclasses: withAllSuperclassesDo: allInstancesDo:) (#initialization emptyMethodDictionary obsolete) ('testing class hierarchy' kindOfSubclass) ('cleanup' cleanUp cleanUp:) ('accessing' typeOfClass classDepth numberOfInstanceVariables) ('accessing instances and variables' subclassInstVarNames someInstance allowsSubInstVars includesSharedPoolNamed: allInstances instanceCount allSharedPools allSubInstances) (#'accessing class hierarchy' allSuperclassesIncluding: withAllSuperclasses withAllSubclassesDo: allSubclassesWithLevelDo:startingLevel:) ('compiling' instVarNamesAndOffsetsDo: variablesAndOffsetsDo:) (#private spaceUsed becomeUncompact checkCanBeUncompact flushCache becomeCompactSimplyAt: becomeCompact indexIfCompact) (#printing storeLiteral:on: literalScannedAs:notifying: printHierarchy longPrintOn: printOn:) ('system startup' shutDown: shutDown startUp: startUp) (#'as yet unclassified' protocols methodNamed: methodsInProtocol: compile:classified:notifying:trailer:ifFail:) ('memory usage' instancesSizeInMemory) ('queries' copiesFromSuperclass: whichSelectorsRead: whichClassDefinesClassVar: whichSuperclassSatisfies: whichClassDefinesInstVar: whichSelectorsAssign: copiedFromSuperclass: copiesMethodsFromSuperclass copiedMethodsFromSuperclass) (#'class compatibility' classVarNames inheritsFrom: whichClassIncludesSelector: poolDictionaryNames allSubclassesDo: subclasses instVarNames allSuperclassesDo: allInstVarNames instSize subclassDefinerClass allSuperclasses allSubclasses allClassVarNames withAllSubclasses) ('user interface' withAllSubAndSuperclassesDo: unreferencedInstanceVariables) (#'adding/removing methods' pureAddSelectorSilently:withMethod: pureRemoveSelector: basicRemoveSelector: methodDictAddSelectorSilently:withMethod: adoptInstance: addSelector:withMethod:notifying: addSelector:withMethod: basicAddSelector:withMethod: localSelectors removeSelectorSilently:) ('obsolete subclasses' removeObsoleteSubclass: allLocalCallsOn: removeAllObsoleteSubclasses addObsoleteSubclass: obsoleteSubclasses) ! !TraitDescription reorganize! (#'*FuelTests' duringTestCompileSilently: duringTestCompileSilently:classified:) (#testing isTestCase) (#'pool variable' usesLocalPoolVarNamed: allSharedPools sharedPoolOfVarNamed: usesPoolVarNamed: hasSharedPools) (#'initialize-release' updateInstances:from:isMeta: superclass:methodDictionary:format: updateInstancesFrom:) (#'users notification' notifyUsersOfChangedSelectors: notifyUsersOfRecategorizedSelector:from:to:) (#'fileIn/Out' fileOut) (#copying copy:from: copyAllCategoriesFrom: copyTraitExpression copyMethodDictionaryFrom: copyCategory:from:classified: copyCategory:from: copy:from:classified: copyAll:from: copyAll:from:classified:) (#printing storeOn: classVariablesString instanceVariablesString printOn: sharedPoolsString) (#'*Slot' composeWithLayout:) (#'accessing method dictionary' methodsInCategory: addSelectorSilently:withMethod: noteAddedSelector:meta: allMethodCategoriesIntegratedThrough: addSelector:withMethod:notifying: allMethodsInCategory: removeSelector: removeCategory: uncategorizedMethods allSelectorsWithout: addAndClassifySelector:withMethod:inProtocol:notifying:) (#'class compatibility' theMetaClass theNonMetaClass) (#organization whichCategoryIncludesSelector: category: zapOrganization organization category reorganize addCategory:before: organization:) (#compiling compile:classified: wantsRecompilationProgressReported compileSilently:classified:notifying: compileSilently: instVarNamesAndOffsetsDo: compile:classified:notifying: compile:classified:withStamp:notifying:logSource: compile:classified:withStamp:notifying: doneCompiling compile:notifying: logMethodSource:forMethod:inCategory:withStamp: noteCompilationOf:meta: acceptsLoggingOfCompilation wantsChangeSetLogging reformatAll compileSilently:classified:) (#initialization obsolete) (#'*rpackage-core' isExtended package isDefinedInPackage: packageOrganizer isExtendedInPackage: packageFromOrganizer: packages packagesWithoutExtensions extendingPackages) (#'instance variables' classThatDefinesClassVariable: instVarNames forceNewFrom: instVarNameForIndex: instVarIndexFor: classThatDefinesInstanceVariable: allInstVarNamesEverywhere instVarIndexFor:ifAbsent: hasInstVarNamed: checkForInstVarsOK:) (#'as yet unclassified' fileOutMethod:on: updateOrganizationDescription:oldCategory:newCategory:changed:) (#accessing traitVersion version classVersion) (#'closure support' variablesAndOffsetsDo:) (#authors addAuthorsTo: authors) (#'organization updating' applyChangesOfNewTraitCompositionReplacing: noteRecategorizedSelectors:oldComposition: noteMethodAdded: noteMethodChanged:to: noteMethodRemoved: notifyOfRecategorizedSelector:from:to: updateOrganizationSelector:oldCategory:newCategory: noteRecategorizedSelector:from:to: updateOrganizationDescription:oldCategory:newCategory:changedCategories: noteChangesFrom:) (#converting asTraitComposition) (#'accessing parallel hierarchy' hasClassTrait classTrait classSide isBaseTrait isMeta isClassTrait baseTrait instanceSide isClassSide isInstanceSide) (#private linesOfCode errorCategoryName notifyRepackage:method:oldProtocol:newProtocol: setInstVarNames: addOnTheLeft: numberOfMethods newInstanceFrom:variable:size:map: instVarMappingFrom: spaceUsed addCompositionOnLeft:) (#enquiries subject trait aliasesForSelector: changedSelectorsComparedTo: collectMethodsFor:into: allAliasesDict) (#'filein/out' fileOutOn:moveSource:toFile: fileOutCategory: commentStamp:prior: printCategoryChunk:on:withStamp:priorMethod: commentStamp: fileOutChangedMessages:on: fileOutMethod: methodsFor: fileOutChangedMessages:on:moveSource:toFile: localMethods moveChangesTo: fileOutCategory:on:moveSource:toFile: classComment:stamp: definition fileOutOn: printMethodChunk:withPreamble:on:moveSource:toFile: classComment: fileOutOrganizationOn: selectorsToFileOutCategory: putClassCommentToCondensedChangesFile:) (#composition - addExclusionOf: + @) (#'accessing class hierarchy' commentInventory subclasses classesThatImplementAllOf: printSubclassesOn:level: subclassesDo:) (#'*NautilusCommon' correspondingForTest) (#'accessing comment' comment: classCommentBlank hasComment comment comment:stamp:) ! !TraitDescription class reorganize! ('cleanup' cleanUp) ('testing' canZapMethodDictionary) ! !TraitBehavior class reorganize! ('testing' canZapMethodDictionary) ('cleanup' cleanUp) !