        public Object duplicate()
was added to TupleItem interface, and this method is called during Tuple.add
so that, if it's a TupleItem and it's not formal, it puts in the Tuple a
duplicate of that object i.e. it creates a new Object which is equal to the
one passed.



Moreover in class Node even localities are evaluated when you in a tuple:
this way if you want to match such a tuple
        in( ..., self, ..., l ) ;
the right evaluation takes place (otherwise a logical locality would have
been put in the tuple and this is not correct). As a consequence setValue
in class LogicalLocality does nothing, because you cannot put a formal
logical variable in a tuple, and so if there's a logical variable in a tuple
that is actual and there's no need to update it (otherwise you'd have got a
ClassCastException, because setValue would have been called with a
PhysicalLocality as a parameter). Everything is transparently to the
programmer :-)
