Following up discussion on the Catalog sometimes delaying Spotter in locations with poor network
http://forum.world.st/Catalog-loading-in-Spotter-td4934969.html#a4935842

Just sharing a poke I had at understanding the name resolution call chain down to the primitives.��
Attached is a Roassal/Artefact generated PDF based on "methods" and "links" from this...

methods := NetNameResolver class methods select: [:m | m selector beginsWith: 'prim']. "start with primitives"
methods := methods asSet.
prevMethods := #() asSet.
links := Set new.
3 timesRepeat: [
|newMethods todo|
newMethods := methods difference: prevMethods.��
prevMethods := methods copy.
todo := newMethods collect: [:m|
|senders|��
((((m methodClass inheritsFrom: TestAsserter)��
or: [m selector = #new])
or: [m methodClass printString beginsWith: 'SmaCC'])
or: [m selector printString beginsWith: '#init'])
ifTrue: [m -> #()]��
ifFalse: [m -> (m senders collect: [:rgmd| rgmd compiledMethod])].
].
todo := todo select: [:sendersOf| sendersOf value size > 0]. "remove fluff"
todo := todo sorted: [:sendersOf1 :sendersOf2| sendersOf1 value size > sendersOf2 value size]. "helps debugging"
todo do: [:sendersOf|��
sendersOf value do: [:sender|��
methods add: sender.
links add: (sender->sendersOf key). ��
]��
].
].
methods copy do: [:m| links detect: [:l| (m = l key) or: [ m = l value] ] ifNone: [ methods remove: m]]. "remove fluff"



After loading Roassal from the Catalog into 60411��
I started with Mondrian to graph like this...

b := RTMondrian new.
b shape box.
b nodes: methods forEach: [:each|
b shape��
withText: [:m| m methodClass printString, String cr, m selector printString];
withTextColor: Color black.
b nodes: { each }.
b layout��
].��
b shape arrowedLine withShorterDistanceAttachPoint.
links do: [:l| b edges connectFrom: l value to: l key].
b layout horizontalDominanceTree horizontalGap: 100.
b build.
b view inspect��

But I wanted to fine tune the layout by moving around a few subtrees
and couldn't work out how to add RTDraggableChildren to the Mondrian edges.

So I tried Roassal direct like this...
�� �� v := RTView new.
�� �� v @ RTDraggableView.
�� �� labelTemplate := (RTLabel new text: [:m | m methodClass printString, String cr, m selector printString]).��

�� �� els := labelTemplate elementsOn: methods. "also see alternative below"
�� �� v addAll: els.
�� �� eb := RTEdgeBuilder new
view: v;
�� elements: els.

�� �� links do: [:l| eb connectFrom: l value to: l key].
�� �� RTHorizontalDominanceTreeLayout ��on: els.
�� �� els @ RTDraggableChildren.
�� �� v inspect.

But couldn't work out how to put a border around the RTLabel, nor change its background colour.��
I saw RTShape>>#fillColor: and #fillColorElement: but couldn't determine how to make use of them.��

The best I could come up with is the following alternative that replaces��
the code in the middle that assigns "els" and "eb" with...
�� ��els := RTBox elementsOn: methods.
�� ��v addAll: els.
�� ��RTNest new
for: els
add: [ :group :method |��
group
addAll: (labelTemplate elementsOn: {method})].
�� ��eb := RTEdgeBuilder new
view: v;
elements: els.
��
cheers -ben