Years ago, I took Lutz Roeder's C# implementation of Digger and translated it into Delphi for Win32 and Delphi.NET at the same time, and designed a native editor (in Delphi for Win32) for editing it in the Delphi IDE as well. I can't remember if I designed a native editor for it in Delphi for .NET. After looking at the CodeCentral entry, it seems that I completed the Delphi for Win32 port in 2004 and the Delphi for .NET port in 2006. While C# generated code meant to run on .NET and Delphi generated code meant to run on Win32, the port I completed accounted for garbage collection on .NET and translated it into memory management in Win32.
Recently, I again translated it from Delphi for Win32 to Java, or, if you will, the Android platform, and in the process, learnt about how to do some anonymous coding, timer code, asynchronous messages, threading, graphics, overlaying graphics onto background graphics, and zooming on the Android platform.
A few months ago, I even completed a prototype of an Android version of a Song Finder (which I initially did on Delphi for Win32 a few months ago), which if released, will find any song you want on the Internet
Where am I going exactly with all these? Frankly, I don't know...
In 2017, with the release of Delphi 10.2 Tokyo, Embarcadero introduced a specialized implementation of the Observer pattern into the System.Classes unit. While it has been in the wild for 9 years, it remains a "hidden" architecture for many, primarily because it serves as the invisible engine behind LiveBindings. Other than live bindings, you can also use the Observer pattern as a way to update component settings to the Windows registry, an .ini file, or persist it elsewhere.
System.Classes