Index: tol/btol/bgrammar/nameblock.cpp
===================================================================
--- tol/btol/bgrammar/nameblock.cpp	(revision 5278fc843a67fb2c91bbb1e0b555c3604f20543a)
+++ tol/btol/bgrammar/nameblock.cpp	(revision 7e2783d7cbc73f116f074db1d6afec7f0d5fe3f6)
@@ -30,5 +30,4 @@
 #include <tol/tol_bdatgra.h>
 #include <tol/tol_btxtgra.h>
-
 
 #include <tol/tol_list.h>
@@ -91,5 +90,6 @@
   level_    (-999999999),
   father_   (current_),
-  localName_()
+  localName_(),
+  owner_    (NULL)
 {
   SetEmptyKey(public_ ,NULL);
@@ -109,5 +109,6 @@
   level_    (-999999999),
   father_   (current_),
-  localName_(localName)
+  localName_(localName),
+  owner_    (NULL)
 {
   SetEmptyKey(public_ ,NULL);
@@ -125,5 +126,6 @@
   set_      (ns.Set     ()),
   father_   (ns.Father  ()),
-  localName_(ns.LocalName())
+  localName_(ns.LocalName()),
+  owner_    (NULL)
 {
   short isAssigned = BObject::IsAssigned();
@@ -144,4 +146,5 @@
 {
   PutName(ns.Name());
+  owner_     = NULL;
   set_       = ns.Set();
   father_    = ns.Father();
@@ -153,4 +156,32 @@
   return(*this);
 }
+
+//--------------------------------------------------------------------
+BUserNameBlock* BNameBlock::Owner() const 
+//--------------------------------------------------------------------
+{ 
+  return(owner_); 
+}
+
+//--------------------------------------------------------------------
+void BNameBlock::PutOwner(BUserNameBlock* owner) 
+//--------------------------------------------------------------------
+{ 
+  owner_ = owner; 
+}
+
+//--------------------------------------------------------------------
+const BText& BNameBlock::Name() const
+//--------------------------------------------------------------------
+{
+  return(BObject::Name());
+}
+
+//--------------------------------------------------------------------
+const BText& BNameBlock::LocalName() const 
+//--------------------------------------------------------------------
+{ 
+  return(localName_); 
+};
 
 //--------------------------------------------------------------------
@@ -565,4 +596,22 @@
     }
   }
+  for(iter=private_.begin(); iter!=private_.end(); iter++)
+  {
+    obj = iter->second;
+    if((obj->Name()[2]=='.')&&
+       (oc.mode_==BUSERFUNMODE) && 
+       (obj->Mode()==BOBJECTMODE) && 
+       (obj->Grammar()==GraCode()))
+    {
+      BUserCode* uc = (BUserCode*)obj;
+      obj = uc->Contens().Operator();
+    }
+    bool match = (obj->Grammar()==oc.grammar_) && (obj->Mode()==oc.mode_);
+    if(match)
+    {
+    //Std(BText("\n")+"  "+GetModeName(obj->Mode())+" "+obj->Grammar()->Name()+" "+obj->Name()+" matches? "+int(match));
+      lst = Cons(obj,lst);
+    }
+  }
   return(lst);
 }
@@ -580,4 +629,14 @@
     obj = iter->second;
     if((obj->Grammar()==GraNameBlock()) && (obj->Mode()==BOBJECTMODE))
+    {
+      BUserNameBlock* unb = (BUserNameBlock*)obj;
+      lst = unb->Contens().SelectMembersDeep(lst, oc);
+    }
+  }
+  for(iter=private_.begin(); iter!=private_.end(); iter++)
+  {
+    obj = iter->second;
+    if((obj->Name()[2]=='.')&&
+       (obj->Grammar()==GraNameBlock()) && (obj->Mode()==BOBJECTMODE))
     {
       BUserNameBlock* unb = (BUserNameBlock*)obj;
@@ -607,4 +666,13 @@
   PutName(parentFullName);
   for(iter=public_.begin(); iter!=public_.end(); iter++)
+  {
+    obj = iter->second;
+    if((obj->Grammar()==GraNameBlock()) && (obj->Mode()==BOBJECTMODE))
+    {
+      unb = (BUserNameBlock*)obj;
+      unb->Contens().RebuildFullNameDeep(parentFullName);
+    }
+  }
+  for(iter=private_.begin(); iter!=private_.end(); iter++)
   {
     obj = iter->second;
Index: tol/btol/bgrammar/tol_bnameblock.h
===================================================================
--- tol/btol/bgrammar/tol_bnameblock.h	(revision 5278fc843a67fb2c91bbb1e0b555c3604f20543a)
+++ tol/btol/bgrammar/tol_bnameblock.h	(revision 7e2783d7cbc73f116f074db1d6afec7f0d5fe3f6)
@@ -37,5 +37,5 @@
 // forward references
 //--------------------------------------------------------------------
-class BUserNameBlock;
+template<class Any> class BGraContensBase;
 
 //--------------------------------------------------------------------
@@ -57,4 +57,5 @@
   BText localName_;
   bool createdWithNew_;
+  BGraContensBase<BNameBlock>* owner_;
 public:
   static bool Initialize();
@@ -81,5 +82,8 @@
 
   int Level() const;
-  const BText& LocalName() const { return(localName_); };
+  BGraContensBase<BNameBlock>* Owner() const;
+  void PutOwner(BGraContensBase<BNameBlock>* owner);
+  const BText& Name() const;
+  const BText& LocalName() const;
   void PutLocalName(const BText& localName) { localName_ = localName; };
   const BObjByNameHash& Public () const { return(public_ ); }
