Now that GNAT GPL 2012 implementing full Ada 2012 is out, my reference counted access types use the new aspect Implicit_Dereference, which greatly simplifies the syntax. (The previous Ada 2005 implementation is also availible.)
This package provides a completely safe implementation in that it prevents deallocation by the user; deallocation is under sole control of the implementation. (It's however not task-safe.)
Full documentation and test programs show how to use the package.
http://www.christ-usch-grein.homepag..._Pointers.html