<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _create_subscription(self, server_id, dest_path, filter_path, owned):
 """ Create an indication subscription instance in the Interop namespace of a WBEM server and return that instance. In order to catch any changes the server applies, the instance is retrieved again using the instance path returned by instance creation. Parameters: server_id (:term:`string`):
 The server ID of the WBEM server, returned by :meth:`~pywbem.WBEMSubscriptionManager.add_server`. dest_path (:class:`~pywbem.CIMInstanceName`):
 Instance path of the listener destination instance in the WBEM server that references this listener. filter_path (:class:`~pywbem.CIMInstanceName`):
 Instance path of the indication filter instance in the WBEM server that specifies the indications to be sent. owned (:class:`py:bool`):
 Defines whether or not the created instance is *owned* by the subscription manager. Returns: :class:`~pywbem.CIMInstance`: The created instance, as retrieved from the server. Raises: Exceptions raised by :class:`~pywbem.WBEMConnection`. """


        # Validate server_id
        server = self._get_server(server_id)

        sub_path = CIMInstanceName(SUBSCRIPTION_CLASSNAME,
                                   namespace=server.interop_ns)

        sub_inst = CIMInstance(SUBSCRIPTION_CLASSNAME)
        sub_inst.path = sub_path
        sub_inst['Filter'] = filter_path
        sub_inst['Handler'] = dest_path

        if owned:
            for inst in self._owned_subscriptions[server_id]:
                if inst.path == sub_path:
                    # It does not have any properties besides its keys,
                    # so checking the path is sufficient.
                    return sub_inst
            sub_path = server.conn.CreateInstance(sub_inst)
            sub_inst = server.conn.GetInstance(sub_path)
            self._owned_subscriptions[server_id].append(sub_inst)
        else:
            # Responsibility to ensure it does not exist yet is with the user
            sub_path = server.conn.CreateInstance(sub_inst)
            sub_inst = server.conn.GetInstance(sub_path)

        return sub_inst