Comment #3 on issue 3763 by da...@teleport.com: assert failure during Decompiler>>popIntoTemporaryVariable: http://code.google.com/p/pharo/issues/detail?id=3763 If I change the source to the following, I can bypass the MethodContext bug and get a debugger on the source of the problem: resolveToLoadableSpecs: required map: packageMap | reqd allReqd map spec newReqd | reqd := required copy. allReqd := Set new. map := self packages map. [ reqd isEmpty ] whileFalse: [ newReqd := Set new. reqd do: [:req | (self resolveToLoadableSpec: req forMap: map packages: packageMap) do: [:loadableSpec | newReqd addAll: loadableSpec requires. newReqd addAll: loadableSpec includes ]]. allReqd addAll: reqd. newReqd removeAllFoundIn: allReqd. reqd := newReqd ]. packageMap keys do: [:pkgName | (spec := (packageMap at: pkgName) resolveToLoadableSpec) == nil ifTrue: [ packageMap removeKey: pkgName ] ifFalse: [ packageMap at: pkgName put: (packageMap at: pkgName) resolveToLoadableSpec ]] The trick is to move the declaration of the two temps spec and newReqd out of the blocks and into the top level ... I suspect that newReqd was the bad boy ...