virtual
            void
            updateRoot(NodePtr root)
            {
                if (root == _root)
                    return;

                if (_root)
                    _root->data()->removeProvider(_data);
                
                _root = root;

                if (_root)
                    _root->data()->addProvider(_data);
            }
NodePtr* list_search(Student<NodePtr>& head_ptr, const Item& target) 
    // Library facilities used: cstdlib
{
	NodePtr* cursor;
	
	for (cursor = head_ptr.get(); cursor != NULL; cursor = cursor->link( ))
	    if (target == cursor->data( ))
		return cursor;
	return NULL;
}