The template Ui Tools Simple, throws an exception if ran multiple times in a row.
Exception: Tool 'my_template.my_circle_select' already exists!
And if you try to unregister it before registering it throws a different error.
AttributeError: type object 'MyTool' has no attribute '_bl_tool'
This "patch" fixes this error but you will have to unregistering before registering your tool first.
This does seem to be a bug in blender. This is the line it crashes on
https://github.com/blender/blender/blob/aec56e562a2799ea764671206f7b3b889b69829d/release/scripts/modules/bpy/utils/__init__.py#L954
The register_tool function is adding that to the class instance at https://github.com/blender/blender/blob/aec56e562a2799ea764671206f7b3b889b69829d/release/scripts/modules/bpy/utils/__init__.py#L872
If it is added to the class instance it makes sense that it isn't there on the uninstantiated class.
I wonder if the bpy.utils.register_class (so for a class and not tool) is calling the corresponding unregister function within it self not to get a "Already registed error" when running from the text editor.