docs: public static String getName(DistributedObject distributedObject) {
          /*
           * The motivation of this behaviour is that some distributed objects (`ICache`) can have prefixed name.
           * For example, for the point of view of cache,
           * it has pure name and full name which contains prefixes also.
           *
           * However both of our `DistributedObject` and `javax.cache.Cache` (from JCache spec) interfaces
           * have same method name with same signature. It is `String getName()`.
           *
           * From the distributed object side, name must be fully qualified name of object,
           * but from the JCache spec side (also for backward compatibility),
           * it must be pure cache name without any prefix.
           * So there is same method name with same signature for different purposes.
           * Therefore, `PrefixedDistributedObject` has been introduced to retrieve the
           * fully qualified name of distributed object when it is needed.
           *
           * For cache case, the fully qualified name is full cache name contains Hazelcast prefix (`/hz`),
           * cache name prefix regarding to URI and/or classloader if specified and pure cache name.
           */
          if (distributedObject instanceof PrefixedDistributedObject) {
              return ((PrefixedDistributedObject) distributedObject).getPrefixedName();
          } else {
              return distributedObject.getName();
          }
      }