While we're on the subject, when one does get a debugger How is a beginner supposed to share the error information with the folks on this list?

I have a debugger open on the stack after executing:

  Metacello new
    configuration: 'GitFileTree';
    version: #stable;
    repository: 'http://smalltalkhub.com/mc/Pharo/MetaRepoForPharo50/main';
    load

which was my guess for the load expression and I'm getting a walkback that I assume is the same as that produced by the Catalog Browser, but there is apparently no way of really knowing ...

Anyway, I've got a very nice debugger with a nice stack and nice error message in the title bar, but I don't see any way of actually being able to share a simple stack trace and error message with the mailing list other than to produce a screenshot which will not show the whole stack ..

I happen to know that the PharoDebug.log contains a stack trace (and I've attached it to this email), but I don't know how a beginner would know to do this, either.

Of course, I think that the stack dump in the PharoDebug.log is unreadable, but at least it is a sharable stack.

Finally to summarize, the actual message error is: 'invalid version number: normal version component must be integer v0' and this error is very likely consequence of a proposed bugfix for a Metacello bug that was reported a month or so ago [1], as I'm using a version of Metacello with the proposed bugfix present ... so at the end of the day, this is a problem with my code ...

But I do think the two questions that came from this exercise are still relevant:

  How does a beginner report/debug a Catalog Browser error?
  How does a beginner produce a sharable stack trace?

Dale

[1] https://github.com/dalehenrich/metacello-work/issues/392

On 07/05/2016 11:13 AM, Dale Henrichs wrote:
Using a freshly downloaded Pharo5.0 and the Catalog Browser, I'm getting a Notification with the message in the subject line while installing GitFileTree, but I get a notification with no indication of why or what the error is ... how am I supposed to debug this?

I mean I can guess what load expression is being used, but for a beginner, this is not a pleasant introduction ...

There is no Pharo debug log either, so I will have to splash around and try to load GitFileTree, in the meantime...

Dale

THERE_BE_DRAGONS_HERE
Error: invalid version number: normal version component must be integer v0
5 July 2016 11:18:06.227447 am

VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.1855 uuid: d8e4a3c2-a3bf-4adc-b224-8012903a1ef4 May  4 2016
StackToRegisterMappingCogit VMMaker.oscog-eem.1855 uuid: d8e4a3c2-a3bf-4adc-b224-8012903a1ef4 May  4 2016
https://github.com/pharo-project/pharo-vm.git Commit: b8ec25a570d7539653e1d793e97609adb509aaed Date: 2016-05-04 11:14:22 +0200 By: Esteban Lorenzano <esteba...@gmail.com> Jenkins build #589

Image: Pharo5.0 [Latest update: #50760]

MetacelloSemanticVersionNumber class(Object)>>error:
	Receiver: MetacelloSemanticVersionNumber
	Arguments and temporary variables: 
		aString: 	'invalid version number: normal version component must be integer v0'
	Receiver's instance variables: 
		superclass: 	Magnitude
		methodDict: 	a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
		format: 	65539
		layout: 	a FixedLayout
		instanceVariables: 	nil
		organization: 	a ClassOrganization
		subclasses: 	{MetacelloOldSemanticVersionNumber}
		name: 	#MetacelloSemanticVersionNumber
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Metacello-Core-Model'
		traitComposition: 	{}
		localSelectors: 	nil


MetacelloSemanticVersionNumber class>>integerFromString:
	Receiver: MetacelloSemanticVersionNumber
	Arguments and temporary variables: 
		aString: 	'v0'
	Receiver's instance variables: 
		superclass: 	Magnitude
		methodDict: 	a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
		format: 	65539
		layout: 	a FixedLayout
		instanceVariables: 	nil
		organization: 	a ClassOrganization
		subclasses: 	{MetacelloOldSemanticVersionNumber}
		name: 	#MetacelloSemanticVersionNumber
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Metacello-Core-Model'
		traitComposition: 	{}
		localSelectors: 	nil


[ :subString | 
| integer |
forPattern
	ifTrue: [ integer := subString ]
	ifFalse: [ integer := self integerFromString: subString.
		integer < 0
			ifTrue: [ self
					error:
						'invalid version number: normal version component must be integer '
							, subString printString ] ].
normalComponents add: integer.
identifierCount := identifierCount + 1 ] in MetacelloSemanticVersionNumber class>>fromString:forPattern:
	Receiver: MetacelloSemanticVersionNumber
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
		superclass: 	Magnitude
		methodDict: 	a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
		format: 	65539
		layout: 	a FixedLayout
		instanceVariables: 	nil
		organization: 	a ClassOrganization
		subclasses: 	{MetacelloOldSemanticVersionNumber}
		name: 	#MetacelloSemanticVersionNumber
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Metacello-Core-Model'
		traitComposition: 	{}
		localSelectors: 	nil


OrderedCollection>>do:
	Receiver: an OrderedCollection('v0' '2' '0')
	Arguments and temporary variables: 
		aBlock: 	[ :subString | 
| integer |
forPattern
	ifTrue: [ integer := subString ...etc...
		index: 	1
	Receiver's instance variables: 
		array: 	#('v0' '2' '0' nil nil nil nil nil nil nil)
		firstIndex: 	1
		lastIndex: 	3


MetacelloSemanticVersionNumber class>>fromString:forPattern:
	Receiver: MetacelloSemanticVersionNumber
	Arguments and temporary variables: 
		identifierCount: 	0
		aString: 	'v0.2.0'
		forPattern: 	false
		new: 	nil
		tokens: 	nil
		preRelease: 	0
		build: 	0
		versionString: 	'v0.2.0'
		normalEnd: 	6
		preReleaseEnd: 	nil
		normalComponents: 	an OrderedCollection()
		preReleaseComponents: 	an OrderedCollection()
		buildComponents: 	an OrderedCollection()
	Receiver's instance variables: 
		superclass: 	Magnitude
		methodDict: 	a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
		format: 	65539
		layout: 	a FixedLayout
		instanceVariables: 	nil
		organization: 	a ClassOrganization
		subclasses: 	{MetacelloOldSemanticVersionNumber}
		name: 	#MetacelloSemanticVersionNumber
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Metacello-Core-Model'
		traitComposition: 	{}
		localSelectors: 	nil


MetacelloSemanticVersionNumber class>>fromString:
	Receiver: MetacelloSemanticVersionNumber
	Arguments and temporary variables: 
		aString: 	'v0.2.0'
		svn: 	nil
	Receiver's instance variables: 
		superclass: 	Magnitude
		methodDict: 	a MethodDictionary(#<->MetacelloSemanticVersionNumber>>#< #=->Metac...etc...
		format: 	65539
		layout: 	a FixedLayout
		instanceVariables: 	nil
		organization: 	a ClassOrganization
		subclasses: 	{MetacelloOldSemanticVersionNumber}
		name: 	#MetacelloSemanticVersionNumber
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Metacello-Core-Model'
		traitComposition: 	{}
		localSelectors: 	nil


MetacelloMCVersionSpec(MetacelloVersionSpec)>>versionNumber
	Receiver: spec import: 'OSSubprocess'.
spec baseline: 'OSSubprocess' with: [
		spec repository: 'git...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	MetacelloMCProject()
		loader: 	nil
		mutable: 	nil
		versionString: 	'v0.2.0'
		blessing: 	nil
		description: 	nil
		author: 	nil
		timestamp: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		packageList: 	spec add: [
	spec 
		name: 'OSSubprocess';
		projectReference: [
	...etc...
		importName: 	'OSSubprocess'
		importArray: 	nil
		repositories: 	spec

		packages: 	nil


MetacelloMCVersion class(MetacelloVersion class)>>fromSpec:
	Receiver: MetacelloMCVersion
	Arguments and temporary variables: 
		aMetacelloVersionSpec: 	spec import: 'OSSubprocess'.
spec baseline: 'OSSubproces...etc...
	Receiver's instance variables: 
		superclass: 	MetacelloVersion
		methodDict: 	a MethodDictionary(#allPackagesForSpecNamed:->MetacelloMCVersion>>#...etc...
		format: 	65541
		layout: 	a FixedLayout
		instanceVariables: 	nil
		organization: 	a ClassOrganization
		subclasses: 	nil
		name: 	#MetacelloMCVersion
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Metacello-MC-Model'
		traitComposition: 	{}
		localSelectors: 	nil


MetacelloMCVersionSpec(MetacelloVersionSpec)>>createVersion
	Receiver: spec import: 'OSSubprocess'.
spec baseline: 'OSSubprocess' with: [
		spec repository: 'git...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	MetacelloMCProject()
		loader: 	nil
		mutable: 	nil
		versionString: 	'v0.2.0'
		blessing: 	nil
		description: 	nil
		author: 	nil
		timestamp: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		packageList: 	spec add: [
	spec 
		name: 'OSSubprocess';
		projectReference: [
	...etc...
		importName: 	'OSSubprocess'
		importArray: 	nil
		repositories: 	spec

		packages: 	nil


[ :versionString :pragmaColl | 
| versionSpec |
versionSpec := self project versionSpec.
versionSpec versionString: versionString.
defined := false.
[ pragmaColl
	do: [ :pragma | 
		executionBlock value: versionSpec value: pragma.
		defined := true ] ]
	on: Error
	do: [ :ex | 
		(MetacelloErrorInProjectConstructionNotification
			versionString: versionSpec versionString
			exception: ex)
			ifTrue: [ ^ ex pass ]
			ifFalse: [ self errorMap at: versionSpec versionString put: ex.
				defined := false ] ].
defined
	ifTrue: [ self validateVersionString: versionString againstSpec: versionSpec.
		versionMap
			at: versionSpec versionString
			put: versionSpec createVersion ].
self reset ] in MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
	Receiver: a MetacelloVersionConstructor
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
		root: 	nil
		configuration: 	a ConfigurationOfOSSubprocess
		project: 	MetacelloMCProject()
		attributeMap: 	a Dictionary(#common->an OrderedCollection([ spec
	baseline: 'OSS...etc...
		attributeOrder: 	an OrderedCollection(#common)
		symbolicVersion: 	nil
		currentContext: 	nil
		errorMap: 	nil


[ :assoc | aBlock value: assoc key value: assoc value ] in Dictionary>>keysAndValuesDo:
	Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
	Arguments and temporary variables: 
		aBlock: 	[ :versionString :pragmaColl | 
| versionSpec |
versionSpec := self pro...etc...
		assoc: 	'v0.2.0'->an OrderedCollection(<version: 'v0.2.0'>)
	Receiver's instance variables: 
		tally: 	6
		array: 	an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...


[ :each | each ifNotNil: [ aBlock value: each ] ] in Dictionary>>associationsDo:
	Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
	Arguments and temporary variables: 
		aBlock: 	[ :assoc | aBlock value: assoc key value: assoc value ]
		each: 	'v0.2.0'->an OrderedCollection(<version: 'v0.2.0'>)
	Receiver's instance variables: 
		tally: 	6
		array: 	an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...


Array(SequenceableCollection)>>do:
	Receiver: an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'->an OrderedCollect...etc...
	Arguments and temporary variables: 
		aBlock: 	[ :each | each ifNotNil: [ aBlock value: each ] ]
		index: 	3
	Receiver's instance variables: 
an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'->an OrderedCollect...etc...

Dictionary>>associationsDo:
	Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
	Arguments and temporary variables: 
		aBlock: 	[ :assoc | aBlock value: assoc key value: assoc value ]
	Receiver's instance variables: 
		tally: 	6
		array: 	an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...


Dictionary>>keysAndValuesDo:
	Receiver: a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'>) '0.2.3'->an OrderedCollecti...etc...
	Arguments and temporary variables: 
		aBlock: 	[ :versionString :pragmaColl | 
| versionSpec |
versionSpec := self pro...etc...
	Receiver's instance variables: 
		tally: 	6
		array: 	an Array('0.2.2'->an OrderedCollection(<version: '0.2.2'>) nil 'v0.2.0'-...etc...


MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
	Receiver: a MetacelloVersionConstructor
	Arguments and temporary variables: 
		defined: 	true
		versionMap: 	a Dictionary('0.2.2'->0.2.2 [MetacelloMCProject] )
		executionBlock: 	[ :versionSpec :pragma | 
(pragma argumentAt: 1) = versionSpec ...etc...
		versionPragmaDict: 	a Dictionary('0.2.2'->an OrderedCollection(<version: '0.2.2'...etc...
	Receiver's instance variables: 
		root: 	nil
		configuration: 	a ConfigurationOfOSSubprocess
		project: 	MetacelloMCProject()
		attributeMap: 	a Dictionary(#common->an OrderedCollection([ spec
	baseline: 'OSS...etc...
		attributeOrder: 	an OrderedCollection(#common)
		symbolicVersion: 	nil
		currentContext: 	nil
		errorMap: 	nil


MetacelloVersionConstructor>>calculate:project:
	Receiver: a MetacelloVersionConstructor
	Arguments and temporary variables: 
		aConfig: 	a ConfigurationOfOSSubprocess
		aProject: 	MetacelloMCProject()
		versionMap: 	a Dictionary('0.2.2'->0.2.2 [MetacelloMCProject] )
		symbolicVersionMap: 	a Dictionary()
		executionBlock: 	[ :versionSpec :pragma | 
(pragma argumentAt: 1) = versionSpec ...etc...
		pragmaDict: 	nil
	Receiver's instance variables: 
		root: 	nil
		configuration: 	a ConfigurationOfOSSubprocess
		project: 	MetacelloMCProject()
		attributeMap: 	a Dictionary(#common->an OrderedCollection([ spec
	baseline: 'OSS...etc...
		attributeOrder: 	an OrderedCollection(#common)
		symbolicVersion: 	nil
		currentContext: 	nil
		errorMap: 	nil


[ :cache | 
self calculate: aConfig project: aProject.
cache at: cacheKey put: self project.
^ self ] in MetacelloVersionConstructor>>on:project:
	Receiver: a MetacelloVersionConstructor
	Arguments and temporary variables: 
		aConfig: 	a ConfigurationOfOSSubprocess
		aProject: 	MetacelloMCProject()
		cacheKey: 	ConfigurationOfOSSubprocess
		cachedProject: 	nil
		cache: 	a Dictionary()
	Receiver's instance variables: 
		root: 	nil
		configuration: 	a ConfigurationOfOSSubprocess
		project: 	MetacelloMCProject()
		attributeMap: 	a Dictionary(#common->an OrderedCollection([ spec
	baseline: 'OSS...etc...
		attributeOrder: 	an OrderedCollection(#common)
		symbolicVersion: 	nil
		currentContext: 	nil
		errorMap: 	nil


[ :dict | 
| cache |
cache := dict at: cacheName ifAbsent: [  ].
cache ~~ nil
	ifTrue: [ | value hasEntry |
		hasEntry := true.
		value := cache at: key ifAbsent: [ hasEntry := false ].
		hasEntry
			ifTrue: [ ^ value ] ]
	ifFalse: [ cache := cacheClass new.
		dict at: cacheName put: cache ].
^ aBlock value: cache ] in MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
	Receiver: a MetacelloPharo30Platform
	Arguments and temporary variables: 
		cacheName: 	#versionConstructor
		cacheClass: 	Dictionary
		key: 	ConfigurationOfOSSubprocess
		aBlock: 	[ :cache | 
self calculate: aConfig project: aProject.
cache at: cacheK...etc...
		dict: 	a Dictionary(#ancestors->a Dictionary('BaselineOfGitFileTree'->an Array(a...etc...
		cache: 	a Dictionary()
	Receiver's instance variables: 
		bypassProgressBars: 	false
		bypassGoferLoadUpdateCategories: 	false


[ ^ aBlock value: dict ] in MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
	Receiver: a MetacelloPharo30Platform
	Arguments and temporary variables: 
		aBlock: 	[ :dict | 
| cache |
cache := dict at: cacheName ifAbsent: [  ].
cache ...etc...
		defaultDictionary: 	nil
		dict: 	a Dictionary(#ancestors->a Dictionary('BaselineOfGitFileTree'->an Array(a...etc...
	Receiver's instance variables: 
		bypassProgressBars: 	false
		bypassGoferLoadUpdateCategories: 	false


BlockClosure>>on:do:
	Receiver: [ ^ aBlock value: dict ]
	Arguments and temporary variables: 
		exception: 	an ExceptionSet
		handlerAction: 	[ :ex | 
(ex isKindOf: MetacelloStackCacheNotification)
	ifTrue:...etc...
	Receiver's instance variables: 
		outerContext: 	MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:...etc...
		startpc: 	100
		numArgs: 	0


MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
	Receiver: a MetacelloPharo30Platform
	Arguments and temporary variables: 
		aBlock: 	[ :dict | 
| cache |
cache := dict at: cacheName ifAbsent: [  ].
cache ...etc...
		defaultDictionary: 	nil
		dict: 	a Dictionary(#ancestors->a Dictionary('BaselineOfGitFileTree'->an Array(a...etc...
	Receiver's instance variables: 
		bypassProgressBars: 	false
		bypassGoferLoadUpdateCategories: 	false


MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
	Receiver: a MetacelloPharo30Platform
	Arguments and temporary variables: 
		cacheName: 	#versionConstructor
		cacheClass: 	Dictionary
		key: 	ConfigurationOfOSSubprocess
		aBlock: 	[ :cache | 
self calculate: aConfig project: aProject.
cache at: cacheK...etc...
	Receiver's instance variables: 
		bypassProgressBars: 	false
		bypassGoferLoadUpdateCategories: 	false


MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:at:doing:
	Receiver: a MetacelloPharo30Platform
	Arguments and temporary variables: 
		cacheName: 	#versionConstructor
		key: 	ConfigurationOfOSSubprocess
		aBlock: 	[ :cache | 
self calculate: aConfig project: aProject.
cache at: cacheK...etc...
	Receiver's instance variables: 
		bypassProgressBars: 	false
		bypassGoferLoadUpdateCategories: 	false


MetacelloVersionConstructor>>on:project:
	Receiver: a MetacelloVersionConstructor
	Arguments and temporary variables: 
		aConfig: 	a ConfigurationOfOSSubprocess
		aProject: 	MetacelloMCProject()
		cacheKey: 	ConfigurationOfOSSubprocess
		cachedProject: 	nil
	Receiver's instance variables: 
		root: 	nil
		configuration: 	a ConfigurationOfOSSubprocess
		project: 	MetacelloMCProject()
		attributeMap: 	a Dictionary(#common->an OrderedCollection([ spec
	baseline: 'OSS...etc...
		attributeOrder: 	an OrderedCollection(#common)
		symbolicVersion: 	nil
		currentContext: 	nil
		errorMap: 	nil


MetacelloVersionConstructor class>>on:project:
	Receiver: MetacelloVersionConstructor
	Arguments and temporary variables: 
		aConfig: 	a ConfigurationOfOSSubprocess
		aProject: 	MetacelloMCProject()
	Receiver's instance variables: 
		superclass: 	MetacelloAbstractVersionConstructor
		methodDict: 	a MethodDictionary(#calculate:project:->MetacelloVersionConstructor...etc...
		format: 	65544
		layout: 	a FixedLayout
		instanceVariables: 	nil
		organization: 	a ClassOrganization
		subclasses: 	nil
		name: 	#MetacelloVersionConstructor
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Metacello-Core-Constructors'
		traitComposition: 	{}
		localSelectors: 	nil


ConfigurationOfOSSubprocess(ConfigurationOf)>>project
	Receiver: a ConfigurationOfOSSubprocess
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	MetacelloMCProject()


MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>projectClassProject
	Receiver: spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	repository: 'github://marianopeck...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
		loader: 	nil
		mutable: 	nil
		name: 	'OSSubprocess'
		className: 	'ConfigurationOfOSSubprocess'
		versionString: 	#stable
		operator: 	nil
		loads: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		projectPackage: 	nil
		repositories: 	spec
repository: 'github://marianopeck/OSSubprocess/repository'
		file: 	nil


MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>version
	Receiver: spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	repository: 'github://marianopeck...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
		loader: 	nil
		mutable: 	nil
		name: 	'OSSubprocess'
		className: 	'ConfigurationOfOSSubprocess'
		versionString: 	#stable
		operator: 	nil
		loads: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		projectPackage: 	nil
		repositories: 	spec
repository: 'github://marianopeck/OSSubprocess/repository'
		file: 	nil


[ self version ] in MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
	Receiver: spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	repository: 'github://marianopeck...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
		loader: 	nil
		mutable: 	nil
		name: 	'OSSubprocess'
		className: 	'ConfigurationOfOSSubprocess'
		versionString: 	#stable
		operator: 	nil
		loads: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		projectPackage: 	nil
		repositories: 	spec
repository: 'github://marianopeck/OSSubprocess/repository'
		file: 	nil


BlockClosure>>on:do:
	Receiver: [ self version ]
	Arguments and temporary variables: 
		exception: 	MetacelloVersionDoesNotExistError
		handlerAction: 	[ :ex | ^ nil ]
	Receiver's instance variables: 
		outerContext: 	MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>vers...etc...
		startpc: 	29
		numArgs: 	0


MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
	Receiver: spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	repository: 'github://marianopeck...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
		loader: 	nil
		mutable: 	nil
		name: 	'OSSubprocess'
		className: 	'ConfigurationOfOSSubprocess'
		versionString: 	#stable
		operator: 	nil
		loads: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		projectPackage: 	nil
		repositories: 	spec
repository: 'github://marianopeck/OSSubprocess/repository'
		file: 	nil


MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>loadedPackageNames:
	Receiver: spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	repository: 'github://marianopeck...etc...
	Arguments and temporary variables: 
		aLoader: 	a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitF...etc...
		vrsn: 	nil
		pkgs: 	nil
	Receiver's instance variables: 
		project: 	BaselineOfGitFileTree(baseline [BaselineOfGitFileTree], )
		loader: 	nil
		mutable: 	nil
		name: 	'OSSubprocess'
		className: 	'ConfigurationOfOSSubprocess'
		versionString: 	#stable
		operator: 	nil
		loads: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		projectPackage: 	nil
		repositories: 	spec
repository: 'github://marianopeck/OSSubprocess/repository'
		file: 	nil


[ :prj | 
prj className ~~ nil
	ifTrue: [ | coll loaded |
		coll := projectMap
			at: prj className
			ifAbsent: [ coll := OrderedCollection new.
				projectMap at: prj className put: coll.
				coll ].
		(loaded := prj loadedPackageNames: aLoader) isEmpty
			ifFalse: [ coll add: prj -> (loaded -> prj loadPackageList) ] ] ] in MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
	Receiver: <<error during printing>>
	Arguments and temporary variables: 
		defaultList: 	#('default')
		aLoader: 	a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitF...etc...
		loadedPackageNames: 	a Set('default')
		projectMap: 	a Dictionary('ConfigurationOfOSSubprocess'->an OrderedCollection() ...etc...
		loadedProjectNames: 	nil
		list: 	nil
		prj: 	spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	repository: 'gith...etc...
		coll: 	an OrderedCollection()
		loaded: 	nil
	Receiver's instance variables: 
		spec: 	spec repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFileTreePh...etc...
		versionNumber: 	baseline
		importedVersions: 	nil
		versionStatus: 	nil
		loaderPolicy: 	nil


OrderedCollection>>do:
	Receiver: an OrderedCollection(spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	repository: ...etc...
	Arguments and temporary variables: 
		aBlock: 	[ :prj | 
prj className ~~ nil
	ifTrue: [ | coll loaded |
		coll := pro...etc...
		index: 	1
	Receiver's instance variables: 
		array: 	an Array(spec 
	name: 'OSSubprocess';
	versionString: #'stable';
	reposi...etc...
		firstIndex: 	1
		lastIndex: 	2


MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
	Receiver: <<error during printing>>
	Arguments and temporary variables: 
		defaultList: 	#('default')
		aLoader: 	a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitF...etc...
		loadedPackageNames: 	a Set('default')
		projectMap: 	a Dictionary('ConfigurationOfOSSubprocess'->an OrderedCollection() ...etc...
		loadedProjectNames: 	nil
		list: 	nil
	Receiver's instance variables: 
		spec: 	spec repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFileTreePh...etc...
		versionNumber: 	baseline
		importedVersions: 	nil
		versionStatus: 	nil
		loaderPolicy: 	nil


MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>>loadVersion:
	Receiver: spec 
	name: 'GitFileTree';
	repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFil...etc...
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
		project: 	ConfigurationOfGitFileTree(0.7 [ConfigurationOfGitFileTree], 0.8 [Conf...etc...
		loader: 	a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitFi...etc...
		mutable: 	nil
		name: 	'GitFileTree'
		className: 	'BaselineOfGitFileTree'
		versionString: 	nil
		operator: 	nil
		loads: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		projectPackage: 	nil
		repositories: 	spec
repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFi...etc...
		file: 	nil


MetacelloProjectSpecForLoad>>performLoad
	Receiver: a MetacelloProjectSpecForLoad
	Arguments and temporary variables: 
<<error during printing>
	Receiver's instance variables: 
		projectSpec: 	spec 
	name: 'GitFileTree';
	repository: 'http://smalltalkhub.com/...etc...
		useDetermineVersionForLoad: 	false
		overrideProjectSpec: 	nil


MetacelloMCBaselineOfProjectSpec(MetacelloGenericProjectSpec)>>load
	Receiver: spec 
	name: 'GitFileTree';
	repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFil...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		project: 	ConfigurationOfGitFileTree(0.7 [ConfigurationOfGitFileTree], 0.8 [Conf...etc...
		loader: 	a MetacelloFetchingMCSpecLoader(linear load : 0.7 [ConfigurationOfGitFi...etc...
		mutable: 	nil
		name: 	'GitFileTree'
		className: 	'BaselineOfGitFileTree'
		versionString: 	nil
		operator: 	nil
		loads: 	nil
		preLoadDoIt: 	nil
		postLoadDoIt: 	nil
		projectPackage: 	nil
		repositories: 	spec
repository: 'http://smalltalkhub.com/mc/ThierryGoubier/GitFi...etc...
		file: 	nil



--- The full stack ---
MetacelloSemanticVersionNumber class(Object)>>error:
MetacelloSemanticVersionNumber class>>integerFromString:
[ :subString | 
| integer |
forPattern
	ifTrue: [ integer := subString ]
	ifFalse: [ integer := self integerFromString: subString.
		integer < 0
			ifTrue: [ self
					error:
						'invalid version number: normal version component must be integer '
							, subString printString ] ].
normalComponents add: integer.
identifierCount := identifierCount + 1 ] in MetacelloSemanticVersionNumber class>>fromString:forPattern:
OrderedCollection>>do:
MetacelloSemanticVersionNumber class>>fromString:forPattern:
MetacelloSemanticVersionNumber class>>fromString:
MetacelloMCVersionSpec(MetacelloVersionSpec)>>versionNumber
MetacelloMCVersion class(MetacelloVersion class)>>fromSpec:
MetacelloMCVersionSpec(MetacelloVersionSpec)>>createVersion
[ :versionString :pragmaColl | 
| versionSpec |
versionSpec := self project versionSpec.
versionSpec versionString: versionString.
defined := false.
[ pragmaColl
	do: [ :pragma | 
		executionBlock value: versionSpec value: pragma.
		defined := true ] ]
	on: Error
	do: [ :ex | 
		(MetacelloErrorInProjectConstructionNotification
			versionString: versionSpec versionString
			exception: ex)
			ifTrue: [ ^ ex pass ]
			ifFalse: [ self errorMap at: versionSpec versionString put: ex.
				defined := false ] ].
defined
	ifTrue: [ self validateVersionString: versionString againstSpec: versionSpec.
		versionMap
			at: versionSpec versionString
			put: versionSpec createVersion ].
self reset ] in MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
[ :assoc | aBlock value: assoc key value: assoc value ] in Dictionary>>keysAndValuesDo:
[ :each | each ifNotNil: [ aBlock value: each ] ] in Dictionary>>associationsDo:
Array(SequenceableCollection)>>do:
Dictionary>>associationsDo:
Dictionary>>keysAndValuesDo:
MetacelloVersionConstructor>>collectAllVersionsFromVersionPragmasInto:using:
MetacelloVersionConstructor>>calculate:project:
[ :cache | 
self calculate: aConfig project: aProject.
cache at: cacheKey put: self project.
^ self ] in MetacelloVersionConstructor>>on:project:
[ :dict | 
| cache |
cache := dict at: cacheName ifAbsent: [  ].
cache ~~ nil
	ifTrue: [ | value hasEntry |
		hasEntry := true.
		value := cache at: key ifAbsent: [ hasEntry := false ].
		hasEntry
			ifTrue: [ ^ value ] ]
	ifFalse: [ cache := cacheClass new.
		dict at: cacheName put: cache ].
^ aBlock value: cache ] in MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
[ ^ aBlock value: dict ] in MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
BlockClosure>>on:do:
MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
MetacelloPharo30Platform(MetacelloPlatform)>>stackCacheFor:at:doing:
MetacelloVersionConstructor>>on:project:
MetacelloVersionConstructor class>>on:project:
ConfigurationOfOSSubprocess(ConfigurationOf)>>project
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>projectClassProject
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>version
[ self version ] in MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
BlockClosure>>on:do:
MetacelloMCConfigurationOfProjectSpec(MetacelloProjectSpec)>>versionOrNil
MetacelloMCConfigurationOfProjectSpec(MetacelloMCProjectSpec)>>loadedPackageNames:
[ :prj | 
prj className ~~ nil
	ifTrue: [ | coll loaded |
		coll := projectMap
			at: prj className
			ifAbsent: [ coll := OrderedCollection new.
				projectMap at: prj className put: coll.
				coll ].
		(loaded := prj loadedPackageNames: aLoader) isEmpty
			ifFalse: [ coll add: prj -> (loaded -> prj loadPackageList) ] ] ] in MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
OrderedCollection>>do:
MetacelloMCVersion>>packageAndProjectNamesToLoad:loader:
MetacelloMCBaselineOfProjectSpec(MetacelloMCProjectSpec)>>loadVersion:
MetacelloProjectSpecForLoad>>performLoad
MetacelloMCBaselineOfProjectSpec(MetacelloGenericProjectSpec)>>load
 - - - - - - - - - - - - - - -  
			- - - - - - - - - - - - - - - - - -
MetacelloProjectReferenceSpec>>loadUsing:gofer:
[ :pkg | pkg loadUsing: self gofer: gofer ] in MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>linearLoadPackageSpecs:repositories:
OrderedCollection>>do:
MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>linearLoadPackageSpecs:repositories:
[ super
	linearLoadPackageSpecs: packageSpecs
	repositories: repositories ] in MetacelloFetchingMCSpecLoader>>linearLoadPackageSpecs:repositories:
BlockClosure>>ensure:
MetacelloLoaderPolicy>>pushLoadDirective:during:
MetacelloLoaderPolicy>>pushLinearLoadDirectivesDuring:for:
MetacelloFetchingMCSpecLoader>>linearLoadPackageSpecs:repositories:
MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>load
MetacelloMCVersionSpecLoader>>load
MetacelloMCVersion>>executeLoadFromArray:
[ :dict | ^ self executeLoadFromArray: anArray ] in [ self versionSpec loader: newLoader.
MetacelloPlatform current
	useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
	defaultDictionary: Dictionary new ] in [ [ self versionSpec loader: newLoader.
MetacelloPlatform current
	useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
	defaultDictionary: Dictionary new ]
	ensure: [ self versionSpec loader: originalLoader ] ] in MetacelloMCVersion>>fetchRequiredFromArray:
[ ^ aBlock value: dict ] in MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
BlockClosure>>on:do:
MetacelloPharo30Platform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
[ self versionSpec loader: newLoader.
MetacelloPlatform current
	useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
	defaultDictionary: Dictionary new ] in [ [ self versionSpec loader: newLoader.
MetacelloPlatform current
	useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
	defaultDictionary: Dictionary new ]
	ensure: [ self versionSpec loader: originalLoader ] ] in MetacelloMCVersion>>fetchRequiredFromArray:
BlockClosure>>ensure:
[ [ self versionSpec loader: newLoader.
MetacelloPlatform current
	useStackCacheDuring: [ :dict | ^ self executeLoadFromArray: anArray ]
	defaultDictionary: Dictionary new ]
	ensure: [ self versionSpec loader: originalLoader ] ] in MetacelloMCVersion>>fetchRequiredFromArray:
MetacelloPharo30Platform(MetacelloPlatform)>>do:displaying:
MetacelloMCVersion>>fetchRequiredFromArray:
[ | fetchLoader |
fetchLoader := self
	fetchRequiredFromArray: (self defaultPackageNamesToLoad: anArray).
MetacelloPlatform current
	do: [ fetchLoader doLoad ]
	displaying: 'Loading ' , displayString.
Transcript
	cr;
	show: '...finished ' , self versionNumber printString.
^ fetchLoader ] in MetacelloMCVersion>>doLoadRequiredFromArray:
BlockClosure>>ensure:
MetacelloMCVersion>>doLoadRequiredFromArray:
MetacelloMCVersion>>load
[ | version loadedSpec |
self setDefaultsAndValidateProjectSpec.
[ loadedSpec := (self lookupProjectSpecFor: self projectSpec) copy ]
	on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
	do:
		[ :ex | ex handleOnDownGrade: onDownGradeBlock onUpgrade: onUpgradeBlock ].
version := loadedSpec versionForScriptEngine: self.
self
	root:
		(required isEmpty
			ifTrue: [ version load ]
			ifFalse: [ version load: required ]) loadDirective.
loadedSpec loads: required.
MetacelloProjectRegistration
	registrationForProjectSpec: loadedSpec
	ifAbsent: [ :new | 
		new
			loadedInImage: true;
			registerProject ]
	ifPresent: [ :existing :new | 
		existing
			copyOnWrite: [ :existingCopy | 
				existingCopy
					loadedInImage: true;
					merge: new ] ] ] in [ self
	handleNotificationsForAction: [ | version loadedSpec |
		self setDefaultsAndValidateProjectSpec.
		[ loadedSpec := (self lookupProjectSpecFor: self projectSpec) copy ]
			on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
			do:
				[ :ex | ex handleOnDownGrade: onDownGradeBlock onUpgrade: onUpgradeBlock ].
		version := loadedSpec versionForScriptEngine: self.
		self
			root:
				(required isEmpty
					ifTrue: [ version load ]
					ifFalse: [ version load: required ]) loadDirective.
		loadedSpec loads: required.
		MetacelloProjectRegistration
			registrationForProjectSpec: loadedSpec
			ifAbsent: [ :new | 
				new
					loadedInImage: true;
					registerProject ]
			ifPresent: [ :existing :new | 
				existing
					copyOnWrite: [ :existingCopy | 
						existingCopy
							loadedInImage: true;
							merge: new ] ] ] ] in MetacelloScriptEngine>>load:onProjectDownGrade:onProjectUpgrade:
BlockClosure>>on:do:
[ actionBlock
	on:
		MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
			, MetacelloProjectSpecLoadedNotification
			, MetacelloScriptEnsureProjectLoadedForDevelopment
			, MetacelloLookupBaselineSpecForEnsureLoad
	do:
		[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ] in [ [ actionBlock
	on:
		MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
			, MetacelloProjectSpecLoadedNotification
			, MetacelloScriptEnsureProjectLoadedForDevelopment
			, MetacelloLookupBaselineSpecForEnsureLoad
	do:
		[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
	on:
		MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
			, MetacelloAllowConflictingProjectUpgrade
	do:
		[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ] in [ [ [ actionBlock
	on:
		MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
			, MetacelloProjectSpecLoadedNotification
			, MetacelloScriptEnsureProjectLoadedForDevelopment
			, MetacelloLookupBaselineSpecForEnsureLoad
	do:
		[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
	on:
		MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
			, MetacelloAllowConflictingProjectUpgrade
	do:
		[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ]
	on: MetacelloAllowLockedProjectChange
	do:
		[ :ex | ex handleResolutionFor: self ]
"MetacelloAllowLockedProjectChange need to be outermost handler ... since it is signaled from second line of handlers" ] in MetacelloScriptEngine>>handleNotificationsForAction:
BlockClosure>>on:do:
[ [ actionBlock
	on:
		MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
			, MetacelloProjectSpecLoadedNotification
			, MetacelloScriptEnsureProjectLoadedForDevelopment
			, MetacelloLookupBaselineSpecForEnsureLoad
	do:
		[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
	on:
		MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
			, MetacelloAllowConflictingProjectUpgrade
	do:
		[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ] in [ [ [ actionBlock
	on:
		MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
			, MetacelloProjectSpecLoadedNotification
			, MetacelloScriptEnsureProjectLoadedForDevelopment
			, MetacelloLookupBaselineSpecForEnsureLoad
	do:
		[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
	on:
		MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
			, MetacelloAllowConflictingProjectUpgrade
	do:
		[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ]
	on: MetacelloAllowLockedProjectChange
	do:
		[ :ex | ex handleResolutionFor: self ]
"MetacelloAllowLockedProjectChange need to be outermost handler ... since it is signaled from second line of handlers" ] in MetacelloScriptEngine>>handleNotificationsForAction:
BlockClosure>>on:do:
[ [ [ actionBlock
	on:
		MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad
			, MetacelloProjectSpecLoadedNotification
			, MetacelloScriptEnsureProjectLoadedForDevelopment
			, MetacelloLookupBaselineSpecForEnsureLoad
	do:
		[ :ex | ex handleResolutionFor: self ]
"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications" ]
	on:
		MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
			, MetacelloAllowConflictingProjectUpgrade
	do:
		[ :ex | ex handleResolutionFor: self ]
"option handlers need to be outermost set of handlers ... last line of defense before users are involved" ]
	on: MetacelloAllowLockedProjectChange
	do:
		[ :ex | ex handleResolutionFor: self ]
"MetacelloAllowLockedProjectChange need to be outermost handler ... since it is signaled from second line of handlers" ] in MetacelloScriptEngine>>handleNotificationsForAction:
BlockClosure>>on:do:
MetacelloScriptEngine>>handleNotificationsForAction:
[ self
	handleNotificationsForAction: [ | version loadedSpec |
		self setDefaultsAndValidateProjectSpec.
		[ loadedSpec := (self lookupProjectSpecFor: self projectSpec) copy ]
			on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
			do:
				[ :ex | ex handleOnDownGrade: onDownGradeBlock onUpgrade: onUpgradeBlock ].
		version := loadedSpec versionForScriptEngine: self.
		self
			root:
				(required isEmpty
					ifTrue: [ version load ]
					ifFalse: [ version load: required ]) loadDirective.
		loadedSpec loads: required.
		MetacelloProjectRegistration
			registrationForProjectSpec: loadedSpec
			ifAbsent: [ :new | 
				new
					loadedInImage: true;
					registerProject ]
			ifPresent: [ :existing :new | 
				existing
					copyOnWrite: [ :existingCopy | 
						existingCopy
							loadedInImage: true;
							merge: new ] ] ] ] in MetacelloScriptEngine>>load:onProjectDownGrade:onProjectUpgrade:
BlockClosure>>ensure:
MetacelloProjectRegistration class>>copyRegistryRestoreOnErrorWhile:
MetacelloScriptEngine>>load:onProjectDownGrade:onProjectUpgrade:
MetacelloScriptEngine>>load:
[ :projectSpec | 
| engine |
engine := MetacelloScriptEngine new
	options: self options copy;
	projectSpec: projectSpec;
	yourself.
engine perform: actionArg key withArguments: actionArg value.
engine root ifNotNil: [ :root | self roots add: root ] ] in MetacelloScriptApiExecutor(MetacelloScriptExecutor)>>execute:
[ :projectSpec | 
projectSpec
	ifNotNil: [ projectSpecBlock
			value: (self applyArgsToProjectSpec: projectSpec copy) ] ] in MetacelloScriptApiExecutor>>executeString:do:
Array(SequenceableCollection)>>do:
MetacelloScriptApiExecutor>>executeString:do:
ByteString(String)>>execute:against:
MetacelloScriptApiExecutor(MetacelloScriptExecutor)>>execute:
Metacello>>execute:args:
Metacello>>load
UndefinedObject>>DoIt
OpalCompiler>>evaluate
RubSmalltalkEditor>>evaluate:andDo:
RubSmalltalkEditor>>highlightEvaluateAndDo:
[ textMorph textArea editor highlightEvaluateAndDo: ann action.
textMorph shoutStyler style: textMorph text ] in [ textMorph textArea
	handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
		textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate:
RubEditingArea(RubAbstractTextArea)>>handleEdit:
[ textMorph textArea
	handleEdit: [ textMorph textArea editor highlightEvaluateAndDo: ann action.
		textMorph shoutStyler style: textMorph text ] ] in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodeRenderer)>>actOnHighlightAndEvaluate:
WorldState>>runStepMethodsIn:
WorldMorph>>runStepMethods
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
[ | aWidget |
aWidget := aSystemWindow openAsIs.
self activeHand mouseFocus: aWidget.
[ aWidget world notNil ]
	whileTrue: [ aWidget outermostWorldMorph doOneCycle ] ] in SystemWindow(Morph)>>openModal:
BlockClosure>>ensure:
SystemWindow(Morph)>>openModal:
SystemWindow>>openModal:
Pharo3Theme(UITheme)>>textEditorIn:text:title:entryText:entryHeight:
MorphicUIManager>>multiLineRequest:initialAnswer:answerHeight:
MCSmalltalkhubRepository class(MCRepository class)>>fillInTheBlankConfigure:
MCSmalltalkhubRepository(MCRepository)>>openAndEditTemplateCopy
MCWorkingCopyBrowser>>editRepository
MCWorkingCopyBrowser(Object)>>perform:orSendTo:
[ | selArgCount |
"show cursor in case item opens a new MVC window"
(selArgCount := selector numArgs) = 0
	ifTrue: [ target perform: selector ]
	ifFalse: [ selArgCount = arguments size
			ifTrue: [ target perform: selector withArguments: arguments ]
			ifFalse: [ target perform: selector withArguments: (arguments copyWith: evt) ].
		self showShortcut ].
self changed ] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
BlockClosure>>ensure:
CursorWithMask(Cursor)>>showWhile:
ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
ToggleMenuItemMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>handleMouseUp:
MouseButtonEvent>>sentTo:
[ ^ anEvent sentTo: self ] in MorphicEventDispatcher>>dispatchEvent:with:
BlockClosure>>ensure:
MorphicEventDispatcher>>dispatchEvent:with:
ToggleMenuItemMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>handleMouseUp:
MouseButtonEvent>>sentTo:
[ ^ anEvent sentTo: self ] in MorphicEventDispatcher>>dispatchEvent:with:
BlockClosure>>ensure:
MorphicEventDispatcher>>dispatchEvent:with:
MenuMorph(Morph)>>processEvent:using:
MenuMorph(Morph)>>processEvent:
MenuMorph>>handleFocusEvent:
[ ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
	handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self)) ] in HandMorph>>sendFocusEvent:to:clear:
BlockClosure>>on:do:
WorldMorph(PasteUpMorph)>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[ :h | 
ActiveHand := h.
h processEvents.
ActiveHand := nil ] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
[ [ World doOneCycle.
Processor yield.
false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
[ self value.
Processor terminateActive ] in BlockClosure>>newProcess
-------------------------------------------------------------------------------

Reply via email to