A private bank with diverse business had a problem. They took a change selecting Smalltalk to implement a key system. After a few years, this application developed a problem without a clear root cause. The upshot was the source code for the application had been corrupted unknown to any of the application owners and there was no viable backup. None of the original design and deployment team was with the company and without the source the application was doomed. Polymorph was asked to help reverse-engineer the application and find a fix for the problem.
Reverse-engineering is a common enough practice for bits of an application but not for full-blown applications and especially not for Smalltalk applications. Smalltalk differs from most applications in the way the executable is constructed. Its constructed as one large body of code called an image, not libraries and linkage. The fundamental technique of reversing an executable is to isolate the code package (main body, library, modules) and concentrate in a small area at a time, this technique does not apply to Smalltalk.
What did work. What worked was to decompile the code, issolate the major layers (database, IO, class library) from the language elements and stimulate the running application in the debugger looking for the fault. This was laborious but effective. The result was issolating a faulty database stored procedure, fix the database code and redeploy the Smalltalk image (akin to the executable).