Currently, hasOwner() only checks if the profile field is null, and not whether the UUID of the GameProfile is null. This runs into the issue that calling hasOwner() isn't a sufficient enough check for trying to get the OfflinePlayer object representing the skull's owner with getOwningPlayer().