In support_im.pdf. page 39, UID_BASED_ID class descriptions, the description for extension function is as below:
"Optional local identifier of the object within the context of the root identifier. Returns the part to the right of the first '::' separator if any, or else any empty String."
From this description, it means that when extension is not existing, then the extension function should return an empty string. However, the description for has_extension function is "True if extension /=Void". "/=void" should be something like null. An empty string is not "/=void". So probably the description for has_extension function should be "True if extension is_empty".