From VisualWorks®, 7.6 of February 8, 2008 on March 3, 2008 at 9:43:50 pm (Dialog confirm: 'You are filing-in a Parcel source file!\\While this is possible it will not have\the same effect as loading the parcel.\None of the Parcel''s prerequisites will\be loaded and none of its load actions\will be performed.\\Are you sure you want to file-in?' withCRs) ifFalse: [self error: 'Parcel file-in abandoned. Choose terminate or close.'] <methods> Kernel.SimpleMessageNode <category>probes</category>
collectReferencesTo: aName in: aCollection receiver collectReferencesTo: aName in: aCollection. arguments do: [:arg | arg collectReferencesTo: aName in: aCollection].
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk | i end searchBlk endCheck relativeIndex | "Check for character index after this node." self sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: [receiver isNil ifTrue: beforeBlk. ^receiver jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: gotItBlk doGotIt: gotItBlk]. "It is in this node, now figure out where." "First check unary and single argument messages" arguments size <= 1 ifTrue: [selectionRange first - sourcePosition first < (selector size + 1 bitShift: -1) ifTrue: gotItBlk. arguments size = 0 ifTrue: gotItBlk. ^arguments first jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: gotItBlk doAfter: afterBlk doGotIt: gotItBlk]. "We have a keyword message with more than 1 argument. Check to see if the index is in the first part of the selector." endCheck := (selector indexOf: $:) + 1. relativeIndex := selectionRange first - sourcePosition first + 1. endCheck >= relativeIndex ifTrue: gotItBlk. i := 0. end := arguments size. searchBlk := [i := i + 1. i > end ifTrue: afterBlk. ^(arguments at: i) jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: gotItBlk doAfter: searchBlk doGotIt: gotItBlk]. ^searchBlk value.
probeCascadeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk | probeStartBlk probeEndBlk i end searchBlk endCheck relativeIndex | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before selector." sourcePosition first > selectionRange first ifTrue: beforeBlk. probeStartBlk := [^self probeRecordAtStart]. probeEndBlk := [^self probeRecordAtEnd]. "It is in this node, now figure out where." "First check unary and single argument messages" arguments size <= 1 ifTrue: [selectionRange first - sourcePosition first < (selector size + 1 bitShift: -1) ifTrue: probeStartBlk. arguments size = 0 ifTrue: probeEndBlk. ^arguments first probeInfoFor: selectionRange doBefore: probeEndBlk doAfter: probeEndBlk]. "We have a keyword message with more than 1 argument. Check to see if the index is in the first part of the selector." endCheck := (selector indexOf: $:) + 1. relativeIndex := selectionRange first - sourcePosition first + 1. endCheck >= relativeIndex ifTrue: [(endCheck bitShift: -1) >= relativeIndex ifTrue: probeStartBlk ifFalse: probeEndBlk]. i := 0. end := arguments size. searchBlk := [i := i + 1. i > end ifTrue: probeEndBlk. ^(arguments at: i) probeInfoFor: selectionRange doBefore: probeEndBlk doAfter: searchBlk]. searchBlk value.
probeFirstExecutingNode "If the receiver's mapEntry is nil, this is almost certainly an optimized loop, and we want to just treat the whole loop as the node." ^receiver mapEntry == nil ifTrue: [self] ifFalse: [receiver probeFirstExecutingNode]
probeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk | probeStartBlk probeEndBlk i end searchBlk endCheck relativeIndex | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. probeStartBlk := [^self probeRecordAtStart]. probeEndBlk := [^self probeRecordAtEnd]. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: [receiver isNil ifTrue: beforeBlk. ^receiver probeInfoFor: selectionRange doBefore: beforeBlk doAfter: probeStartBlk]. "It is in this node, now figure out where." "First check unary and single argument messages" arguments size <= 1 ifTrue: [selectionRange first - sourcePosition first < (selector size + 1 bitShift: -1) ifTrue: probeStartBlk. arguments size = 0 ifTrue: probeEndBlk. ^arguments first probeInfoFor: selectionRange doBefore: probeEndBlk doAfter: probeEndBlk]. "We have a keyword message with more than 1 argument. Check to see if the index is in the first part of the selector." endCheck := (selector indexOf: $:) + 1. relativeIndex := selectionRange first - sourcePosition first + 1. endCheck >= relativeIndex ifTrue: [(endCheck bitShift: -1) >= relativeIndex ifTrue: probeStartBlk ifFalse: probeEndBlk]. i := 0. end := arguments size. searchBlk := [i := i + 1. i > end ifTrue: probeEndBlk. ^(arguments at: i) probeInfoFor: selectionRange doBefore: probeEndBlk doAfter: searchBlk]. searchBlk value.
probeRecordAtEnd | end | end := sourcePosition first - 1 + (arguments size > 1 ifTrue: [selector indexOf: $:] ifFalse: [(2 max: selector size)]). ^ProbeInsertionRecord characterIndex: end blockIndex: blockIndex mapEntry: mapEntry atEnd: true
</methods> <methods> Kernel.LiteralNode <category>copying</category>
postDcopyUsing: copyDict "Complete the deep copy operation. This method was placed in this class to prevent unintended copying of literals." sourcePosition := sourcePosition basicDcopyUsing: copyDict. comment := comment basicDcopyUsing: copyDict. mapEntry := mapEntry basicDcopyUsing: copyDict.
</methods> <methods> Kernel.VariableNode <category>probes</category>
collectReferencesTo: aName in: aCollection name = aName ifTrue: [aCollection add: self]
probeRecordAtEnd mapEntry isNil ifTrue: [^nil]. ^ProbeInsertionRecord characterIndex: self sourcePosition last blockIndex: blockIndex mapEntry: mapEntry atEnd: true
</methods> <methods> Kernel.SequenceNode <category>probes</category>
collectReferencesTo: aName in: aCollection statements do: [:stmt | stmt collectReferencesTo: aName in: aCollection].
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk | betweenBlk searchBlk end i | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: beforeBlk. "Check for nil block." sourcePosition first > sourcePosition last ifTrue: [blockIndex == blkIndex ifTrue: [^self probeRecordAtStart] ifFalse: [^nil]]. "It is in this node, now figure out where." end := statements size. i := 0. betweenBlk := [| record | blockIndex == blkIndex ifFalse: [^nil]. i := i - 1. i = 0 ifTrue: [^self probeRecordAtStart]. record := (statements at: i) probeRecordAtEnd. record isNil ifFalse: [^record]. betweenBlk value]. searchBlk := [i := i + 1. i > end ifTrue: betweenBlk. ^(statements at: i) jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: betweenBlk doAfter: searchBlk doGotIt: betweenBlk]. ^searchBlk value.
probeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk | probeStartBlk end i betweenBlk searchBlk | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. probeStartBlk := [^self probeRecordAtStart]. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: beforeBlk. "Check for nil block." sourcePosition first > sourcePosition last ifTrue: [^self probeRecordAtStart]. "It is in this node, now figure out where." end := statements size. i := 0. betweenBlk := [| record | i := i - 1. i = 0 ifTrue: probeStartBlk. record := (statements at: i) probeRecordAtEnd. record isNil ifFalse: [^record]. betweenBlk value]. searchBlk := [i := i + 1. i > end ifTrue: betweenBlk. ^(statements at: i) probeInfoFor: selectionRange doBefore: betweenBlk doAfter: searchBlk]. ^searchBlk value.
probeRecordAtEnd statements reverseDo: [:aNode | |record| (record := aNode probeRecordAtEnd) == nil ifFalse: [^record]]. (returnMapEntry isNil or: [returnMapEntry key isNil]) ifTrue: [^self probeRecordAtStart]. returnMapEntry end isNil ifTrue: [returnMapEntry end: returnMapEntry key]. ^ProbeInsertionRecord characterIndex: sourcePosition last blockIndex: blockIndex mapEntry: returnMapEntry atEnd: true
probeRecordAtStart | node | node := self statements detect: [:nd | nd mapEntry notNil] ifNone: []. ^node == nil ifTrue: [ProbeInsertionRecord characterIndex: (sourcePosition first min: sourcePosition last) blockIndex: blockIndex mapEntry: mapEntry atEnd: false] ifFalse: [node probeFirstExecutingNode probeRecordAtStart]
</methods> <methods> Kernel.MethodNode <category>probes</category>
collectReferencesTo: aName | collection | collection := OrderedCollection new. block collectReferencesTo: aName in: collection. ^collection
emptyMethodProbeRecord | end | end := block arguments size > 1 ifTrue: [selector indexOf: $:] ifFalse: [(2 max: selector size)]. ^ProbeInsertionRecord characterIndex: end blockIndex: self blockIndex mapEntry: mapEntry atEnd: false
jumpRecordFor: selectionRange blkIndex: blkIndex block isEmpty ifTrue: [^self emptyMethodProbeRecord]. ^block jumpRecordFor: selectionRange blkIndex: blkIndex
probeRecordAtStart block isEmpty ifTrue: [^self emptyMethodProbeRecord]. ^block body probeRecordAtStart
probeRecordFor: selectionRange block isEmpty ifTrue: [^self emptyMethodProbeRecord]. ^block probeRecordFor: selectionRange
</methods> <methods> Kernel.LocalVariable <category>accessing</category>
nesting ^scope
</methods> <methods> Kernel.MessageNode <category>probes</category>
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk | i end searchBlk endCheck relativeIndex checkBlk | "Check for character index after this node." self sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before selector, may be in receiver." checkBlk := [:record | record == nil ifTrue: [^nil]. blockIndex == blkIndex ifFalse: [^record]. ^(self isExpanded and: [(expansion isKindOf: ConditionalNode) not]) ifTrue: gotItBlk ifFalse: [record]]. sourcePosition first > selectionRange first ifTrue: [receiver isNil ifTrue: beforeBlk. checkBlk value: (receiver jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: gotItBlk doGotIt: gotItBlk)]. "It is in this node, now figure out where." "First check unary and single argument messages" arguments size <= 1 ifTrue: [selectionRange first - sourcePosition first < (selector size + 1 bitShift: -1) ifTrue: gotItBlk. arguments size = 0 ifTrue: afterBlk. checkBlk value: (arguments first jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: gotItBlk doAfter: afterBlk doGotIt: gotItBlk)]. "We have a keyword message with more than 1 argument. Check to see if the index is in the first part of the selector." endCheck := (selector indexOf: $:) + 1. relativeIndex := selectionRange first - sourcePosition first + 1. endCheck >= relativeIndex ifTrue: gotItBlk. i := 0. end := arguments size. searchBlk := [i := i + 1. i > end ifTrue: afterBlk. checkBlk value: ((arguments at: i) jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: gotItBlk doAfter: searchBlk doGotIt: gotItBlk)]. ^searchBlk value.
</methods> <methods> Kernel.ProgramNode <category>probes</category>
collectReferencesTo: aName in: aCollection
probeFirstExecutingNode ^self
probeRecordAtEnd self error: (#ErrorRecordAtEndMessage << #pdp >> 'Internal error - please report as probeRecordAtEnd condition').
probeRecordAtStart ^ProbeInsertionRecord characterIndex: self sourcePosition first blockIndex: blockIndex mapEntry: mapEntry atEnd: false
</methods> <methods> Kernel.BlockNode <category>probes</category>
collectReferencesTo: aName in: aCollection body collectReferencesTo: aName in: aCollection
jumpRecordFor: selectionRange blkIndex: blkIndex ^body jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: [^body probeRecordAtStart] doAfter: [^nil] doGotIt: [^nil]
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk "Check for character index after this node." sourcePosition last < selectionRange first ifTrue: afterBlk. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: beforeBlk. ^body jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: [body blockIndex == blkIndex ifTrue: [^body probeRecordAtStart] ifFalse: [^nil]] doAfter: [body blockIndex == blkIndex ifTrue: [^body probeRecordAtEnd] ifFalse: [^nil]] doGotIt: gotItBlk.
probeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk | probeStartBlk probeEndBlk | "Check for character index after this node." sourcePosition last < selectionRange first ifTrue: afterBlk. probeStartBlk := [^body probeRecordAtStart]. probeEndBlk := [^body probeRecordAtEnd]. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: beforeBlk. "If there is an empty selection immediately preceding the block's [ character, or if the [ is the first character in the selection, we will take this as a special case where the block is being selected as a literal rather than selecting a statement inside the block. This trick is not possible if the block is optimized." (sourcePosition first = selectionRange first and: [self mapEntry notNil]) ifTrue: [^super probeRecordAtStart]. ^body probeInfoFor: selectionRange doBefore: probeStartBlk doAfter: probeEndBlk.
probeRecordAtEnd ^ProbeInsertionRecord characterIndex: sourcePosition last blockIndex: blockIndex mapEntry: mapEntry atEnd: true
probeRecordAtStart ^ProbeInsertionRecord characterIndex: sourcePosition first blockIndex: blockIndex mapEntry: mapEntry atEnd: false
probeRecordFor: selectionRange ^body probeInfoFor: selectionRange doBefore: [^body probeRecordAtStart] doAfter: [^body probeRecordAtEnd]
</methods> <methods> Kernel.AssignmentNode <category>probes</category>
collectReferencesTo: aName in: aCollection variable collectReferencesTo: aName in: aCollection. value collectReferencesTo: aName in: aCollection.
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before operator, may be in variable." sourcePosition first > selectionRange first ifTrue: [^variable jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: gotItBlk doGotIt: gotItBlk]. selectionRange first = sourcePosition first ifTrue: gotItBlk. selectionRange first <= (sourcePosition first + 2) ifTrue: gotItBlk. "It is in this node, check the value node." ^value jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: gotItBlk doAfter: afterBlk doGotIt: gotItBlk
probeFirstExecutingNode ^value probeFirstExecutingNode
probeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk "The probe placement rules for an assignment are a little inconsistent. We treat the assignemt operator like a message which is akin to postfix whereas assignment is an infix operator. So, if the selection point is at the beginning of the operator then the probe is inserted before the assignment operation and if it is at the end then the probe is inserted after the operation. Additionally, we need to examine what to do if the value cannot determine where to put the probe." | probeStartBlk probeEndBlk | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. probeStartBlk := [^self probeRecordAtStart]. probeEndBlk := [^self probeRecordAtEnd]. "Check for character index before operator, may be in variable." sourcePosition first > selectionRange first ifTrue: [^variable probeInfoFor: selectionRange doBefore: beforeBlk doAfter: probeStartBlk]. selectionRange first = sourcePosition first ifTrue: probeStartBlk. selectionRange first <= (sourcePosition first + 2) ifTrue: probeEndBlk. "It is in this node, check the value node." ^value probeInfoFor: selectionRange doBefore: probeEndBlk doAfter: probeEndBlk
probeRecordAtEnd ^ProbeInsertionRecord characterIndex: sourcePosition first + 1 blockIndex: blockIndex mapEntry: mapEntry atEnd: true
probeRecordAtStart ^ProbeInsertionRecord characterIndex: sourcePosition first blockIndex: blockIndex mapEntry: mapEntry atEnd: false
</methods> <methods> Kernel.LocalScope <category>accessing</category>
addVariable: aVar named: aName variables == nil ifTrue: [self initVariables]. variables at: aName put: aVar. variableList addLast: aName -> aVar
allInstVarNames | names ivars | ivars := self instanceVariables. names := OrderedCollection new: ivars size. ivars do: [:ac | names add: ac key]. ^names
</methods> <methods> Kernel.LocalScope <category>private</category>
basicGetInstanceVariables | ivars | ivars := SortedCollection sortBlock: [:a :b | a value index < b value index]. variables associationsDo: [:ac | ac value class == InstanceVariable ifTrue: [ivars add: ac]]. ^ivars
</methods> <methods> Kernel.LocalScope <category>accessing</category>
instanceVariables outerScope class == LocalScope ifFalse: [^self basicGetInstanceVariables]. ^outerScope instanceVariables
</methods> <methods> Kernel.LeafNode <category>probes</category>
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk "The default action is to determine if selectionRange is within the receiver, and if it is to return no pc. Subclasses may override." "Check for character index after this node." self sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before this node." self sourcePosition first > selectionRange first ifTrue: beforeBlk. gotItBlk value.
probeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk "The default action is to determine if selectionRange is within the receiver, and if it is to return no pc. Subclasses may override." "Check for character index after this node." mapEntry isNil ifTrue: beforeBlk. self sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before this node." self sourcePosition first > selectionRange first ifTrue: beforeBlk. "Determine if selection is at beginning or end." selectionRange first < (self sourcePosition first + self sourcePosition last + 2 bitShift: -1) ifTrue: [^self probeRecordAtStart]. ^self probeRecordAtEnd
probeRecordAtEnd mapEntry isNil ifTrue: [^nil]. ^ProbeInsertionRecord characterIndex: self sourcePosition last blockIndex: blockIndex mapEntry: mapEntry atEnd: true
</methods> <methods> Kernel.ReturnNode <category>probes</category>
collectReferencesTo: aName in: aCollection value collectReferencesTo: aName in: aCollection.
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before operator, may be in variable." sourcePosition first > selectionRange first ifTrue: beforeBlk. "It is in this node, check the value node." "Even if the selectionRange occurs after the value we break before the return because a break after the return would never be hit." ^value jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: gotItBlk doAfter: gotItBlk doGotIt: gotItBlk
probeFirstExecutingNode ^value probeFirstExecutingNode
probeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk | probeStartBlk | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. probeStartBlk := [^self probeRecordAtStart]. "Check for character index before operator, may be in variable." sourcePosition first > selectionRange first ifTrue: beforeBlk. "It is in this node, check the value node." "Even if the selectionRange occurs after the value we break before the return because a break after the return would never be hit." ^value probeInfoFor: selectionRange doBefore: probeStartBlk doAfter: probeStartBlk
probeRecordAtEnd ^self probeRecordAtStart
</methods> <methods> Kernel.NameScope <category>accessing</category>
outerScope ^outerScope
temps ^outerScope temps
</methods> <methods> Kernel.MethodNodeHolder <category>copying</category>
postDcopyUsing: copyDict "Complete the deep copy operation." sourceInfo := sourceInfo basicDcopyUsing: copyDict. methodNode := methodNode basicDcopyUsing: copyDict.
</methods> <methods> Kernel.MethodNodeHolder <category>accessing</category>
visibleSourceMap ^sourceInfo collect: [:info | info visibleMap]
</methods> <methods> Kernel.CascadeNode <category>probes</category>
collectReferencesTo: aName in: aCollection receiver collectReferencesTo: aName in: aCollection. messages do: [:aMsg | aMsg collectReferencesTo: aName in: aCollection]
jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: afterBlk doGotIt: gotItBlk | end i searchBlk record | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: [^receiver jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: beforeBlk doAfter: gotItBlk doGotIt: gotItBlk]. "It is in this node, now figure out where." end := messages size. i := 0. searchBlk := [i := i + 1. i > end ifTrue: gotItBlk. record := (messages at: i) jumpRecordFor: selectionRange blkIndex: blkIndex doBefore: gotItBlk doAfter: searchBlk doGotIt: gotItBlk. "First allow for caret in another block." record == nil ifTrue: [^nil]. blockIndex == blkIndex ifFalse: [^record]. "In this node, must set to start of first message." gotItBlk value]. ^searchBlk value
probeFirstExecutingNode ^receiver probeFirstExecutingNode
probeInfoFor: selectionRange doBefore: beforeBlk doAfter: afterBlk | probeStartBlk end i betweenBlk searchBlk | "Check for character index after this node." sourcePosition last + 1 < selectionRange first ifTrue: afterBlk. probeStartBlk := [^messages first probeRecordAtStart]. "Check for character index before selector, may be in receiver." sourcePosition first > selectionRange first ifTrue: [^receiver probeInfoFor: selectionRange doBefore: beforeBlk doAfter: probeStartBlk]. "It is in this node, now figure out where." end := messages size. i := 0. betweenBlk := [| record | i := i - 1. i = 0 ifTrue: probeStartBlk. record := (messages at: i) probeRecordAtEnd. record isNil ifFalse: [^record]. betweenBlk value]. searchBlk := [i := i + 1. i > end ifTrue: betweenBlk. ^(messages at: i) probeCascadeInfoFor: selectionRange doBefore: betweenBlk doAfter: searchBlk]. ^searchBlk value
probeRecordAtEnd mapEntry isNil ifTrue: [^nil]. ^ProbeInsertionRecord characterIndex: self sourcePosition last blockIndex: blockIndex mapEntry: mapEntry atEnd: true
probeRecordAtStart ^messages first probeRecordAtStart
</methods> <methods> Kernel.DeferredStaticScope <category>accessing</category>
tempNames ^outerScope tempNames
</methods> "Imported Classes:" self error: 'Attempting to file-in parcel imports. Choose terminate or close' <class> <name>MethodNodeHolder</name> <environment>Kernel</environment> <super>Core.Object</super> <private>false</private> none methodNode compiledMethod sourceInfo <imports></imports> <category>System-Compiler-Support</category> <attributes> <package>System-Compiler-Support</package> </attributes> </class> <class> <name>ProgramNode</name> <environment>Kernel</environment> <super>Core.Object</super> <private>false</private> none sourcePosition comment compilerHints blockIndex mapEntry returnMapEntry <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>LeafNode</name> <environment>Kernel</environment> <super>Kernel.ValueNode</super> <private>false</private> none <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>VariableNode</name> <environment>Kernel</environment> <super>Kernel.LeafNode</super> <private>false</private> none name read <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>CascadeNode</name> <environment>Kernel</environment> <super>Kernel.ValueNode</super> <private>false</private> none receiver messages <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>AssignmentNode</name> <environment>Kernel</environment> <super>Kernel.ValueNode</super> <private>false</private> none variable value leftArrow assignToArgOK <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>BlockNode</name> <environment>Kernel</environment> <super>Kernel.LeafNode</super> <private>false</private> none arguments body <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>MethodNode</name> <environment>Kernel</environment> <super>Kernel.ProgramNode</super> <private>false</private> none selector primitive primitiveErrorCode primitiveModule primitiveSourcePosition block attributeMessages <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>NameScope</name> <environment>Kernel</environment> <super>Core.Object</super> <private>false</private> none outerScope <imports></imports> <category>System-Compiler-Names and Scopes</category> <attributes> <package>System-Compiler-Names and Scopes</package> </attributes> </class> <class> <name>DeferredStaticScope</name> <environment>Kernel</environment> <super>Kernel.NameScope</super> <private>false</private> none <imports></imports> <category>System-Compiler-Names and Scopes</category> <attributes> <package>System-Compiler-Names and Scopes</package> </attributes> </class> <class> <name>LocalVariable</name> <environment>Kernel</environment> <super>Kernel.VariableDefinition</super> <private>false</private> none scope index read savedVar <imports></imports> <category>System-Compiler-Names and Scopes</category> <attributes> <package>System-Compiler-Names and Scopes</package> </attributes> </class> <class> <name>ReturnNode</name> <environment>Kernel</environment> <super>Kernel.StatementNode</super> <private>false</private> none value <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>LiteralNode</name> <environment>Kernel</environment> <super>Kernel.LeafNode</super> <private>false</private> none value <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>SimpleMessageNode</name> <environment>Kernel</environment> <super>Kernel.ValueNode</super> <private>false</private> none receiver selector arguments precedence <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>MessageNode</name> <environment>Kernel</environment> <super>Kernel.SimpleMessageNode</super> <private>false</private> none expanded expansion <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>SequenceNode</name> <environment>Kernel</environment> <super>Kernel.ValueNode</super> <private>false</private> none temporaries statements <imports></imports> <category>System-Compiler-Program Objects</category> <attributes> <package>System-Compiler-Program Objects</package> </attributes> </class> <class> <name>LocalScope</name> <environment>Kernel</environment> <super>Kernel.NameScope</super> <private>false</private> none variables nesting variableList permitDuplicateNames <imports></imports> <category>System-Compiler-Names and Scopes</category> <attributes> <package>System-Compiler-Names and Scopes</package> </attributes> </class>