Just couldnt find existing class in FreePascal / Lazarus like a ISafeGuard from JCL, so i tried to compile package jcl\packages\fpc\jcl.lpk under FPC, but too many dependencies and errors occured.
After all i only cut ISafeGuard class source code from JCL and successfully compiled.
I know about COM & Interfaces in pascal, but wonder why such convenient trick for releasing objects is not prevalent and not included into FreePascal RTL.