Declare Listener as the owner of the channel. Unlike a 
channel opened using listen/2, 
channels that have an owner can terminate the channel. This is commonly 
used if an object is listening to broadcast messages. In the example 
below we define a‘name-item’displaying the name of an 
identifier represented by the predicate name_of/2.
:- pce_begin_class(name_item, text_item).
variable(id,    any,    get, "Id visualised").
initialise(NI, Id:any) :->
        name_of(Id, Name),
        send_super(NI, initialise, name, Name,
                   message(NI, set_name, @arg1)),
        send(NI, slot, id, Id),
        listen(NI, name_of(Id, Name),
               send(NI, selection, Name)).
unlink(NI) :->
        unlisten(NI),
        send_super(NI, unlink).
set_name(NI, Name:name) :->
        get(NI, id, Id),
        retractall(name_of(Id, _)),
        assert(name_of(Id, Name)),
        broadcast(name_of(Id, Name)).
:- pce_end_class.