Index: tol/LoadDynLib/LoadDynLib.cpp
===================================================================
--- tol/LoadDynLib/LoadDynLib.cpp	(revision 2c3c5941303841d778f4731051d3890d99774091)
+++ tol/LoadDynLib/LoadDynLib.cpp	(revision 9bece5f3a41f376810f4a462f94861a62444411e)
@@ -66,5 +66,5 @@
   uCode->PutName(name);
   uCode->PutDescription(desc);
-  nb.AddElement(uCode,true);
+  nb.AddElement(uCode,true,false);
   return(uCode);
 }
Index: tol/OIS/oisloader.cpp
===================================================================
--- tol/OIS/oisloader.cpp	(revision 2c3c5941303841d778f4731051d3890d99774091)
+++ tol/OIS/oisloader.cpp	(revision 9bece5f3a41f376810f4a462f94861a62444411e)
@@ -175,8 +175,11 @@
     {
       EnsureFileOpenR(hrchyDetail_, "hrchyDetail", ".hrchyDetail"    );
+    //hrchyDetail_.SetPos(strlen(".hrchyDetail"));
       TRACE_SHOW_LOW(fun,"2.15");
       EnsureFileOpenR(hrchyOffset_, "hrchyOffset", ".hrchyOffset"    );
+    //hrchyOffset_.SetPos(strlen(".hrchyOffset"));
       TRACE_SHOW_LOW(fun,"2.16");
       EnsureFileOpenR(hrchyOrder_,  "hrchyOrder",  ".hrchyOrder"     );
+    //hrchyOrder_.SetPos(strlen(".hrchyOrder"));
       TRACE_SHOW_LOW(fun,"2.17");
     }
@@ -215,7 +218,14 @@
   ERead(aux, code_   ); if(aux!=address+"/.code>\n"   ) { return(BinError(".code"    )); }
   if(control_.oisEngine_.oisVersion_>="01.07") {
-  ERead(aux, hrchyDetail_); if(aux!=address+"/.hrchyDetail>\n") { return(BinError(".hrchyDetail" )); }
-  ERead(aux, hrchyOffset_); if(aux!=address+"/.hrchyOffset>\n") { return(BinError(".hrchyOffset" )); }
-  ERead(aux, hrchyOrder_ ); if(aux!=address+"/.hrchyOrder>\n" ) { return(BinError(".hrchyOrder"  )); } }
+    ERead(aux, hrchyDetail_); 
+    if(aux!=address+"/.hrchyDetail>\n") { return(BinError(".hrchyDetail" )); }
+    hrchyDetail_->SetPos(sizeof(int)+aux.Length());
+    ERead(aux, hrchyOffset_); 
+    if(aux!=address+"/.hrchyOffset>\n") { return(BinError(".hrchyOffset" )); }
+    hrchyOffset_->SetPos(sizeof(int)+aux.Length());
+    ERead(aux, hrchyOrder_ ); 
+    if(aux!=address+"/.hrchyOrder>\n" ) { return(BinError(".hrchyOrder"  )); } 
+    hrchyOrder_->SetPos(sizeof(int)+aux.Length());
+  }
   else { numFiles-=3; }
   enable_BSE_=(control_.oisEngine_.oisVersion_>="01.08")!=0;
@@ -440,5 +450,5 @@
         owner.getFullName()+
         I2(" due to ascent Class "," debido a que su ascendiente Class ")+
-        parentName+I2(" doesn't exist"," no existe")));
+        parentName+I2(" doesn't exist"," no existe"))!=0);
     }
     const BText& fn = parent->getFullNameRef();
@@ -1206,5 +1216,5 @@
               if(!mem)
               {
-                oldBuilding->Contens().AddElement(unb, true);
+                oldBuilding->Contens().AddElement(unb, true, true);
               }
             }
@@ -1229,5 +1239,5 @@
               if(!mem)
               {
-                x.AddElement(r, true); 
+                x.AddElement(r, true, true); 
               }
             }
Index: tol/btol/bgrammar/nameblock.cpp
===================================================================
--- tol/btol/bgrammar/nameblock.cpp	(revision 2c3c5941303841d778f4731051d3890d99774091)
+++ tol/btol/bgrammar/nameblock.cpp	(revision 9bece5f3a41f376810f4a462f94861a62444411e)
@@ -426,5 +426,5 @@
     if(oldBuildingLevel == level-1)
     { 
-      oldBuilding->Contens().AddElement(ns_result, true);
+      oldBuilding->Contens().AddElement(ns_result, true, false);
     //BSyntaxObject* found = GraNameBlock()->EvaluateExpr(fullName);
     //assert(found);
@@ -466,5 +466,5 @@
           if(obj)
           {
-            newNameBlock.AddElement(obj,true);
+            newNameBlock.AddElement(obj,true,false);
           }
         }
@@ -554,5 +554,5 @@
         {
           obj = GraAnything()->EvaluateTree(mbr->branch_);
-          newNameBlock.AddElement(obj, true);
+          newNameBlock.AddElement(obj, true, false);
         }
       }
@@ -611,5 +611,5 @@
 
 //--------------------------------------------------------------------
-  bool BNameBlock::AddElement(BSyntaxObject* obj, bool addToSet)
+  bool BNameBlock::AddElement(BSyntaxObject* obj, bool addToSet, bool fromOis)
 //--------------------------------------------------------------------
 {
@@ -634,12 +634,4 @@
     return(false);
   }
-  if(name=="_this")
-  {
-    Error(I2("Reserved member name ",
-             "Nombre de miembro reservado  ")+ name+"\n"+
-            I2("Cannot build NameBlock ",
-               "No se puede construir el NameBlock ")+Name());
-    return(false);
-  }
   BSyntaxObject* mem = Member(name);
   if(mem)
@@ -690,6 +682,61 @@
       nonPrivateMembers_++; 
     //Std(BText("\nTRACE BNameBlock::Build added read only member ")+Name()+"::"+name+"\n");
-    }
-  //else { Std(BText("\nTRACE BNameBlock::Build added private member ")+Name()+"::"+name+"\n"); }
+      if(!fromOis && (name=="_.autodoc.dependencies"))
+      {
+        if(obj->Grammar()!=GraSet())
+        { 
+          Error(I2("Wrong declaration of ","Definición errónea de ")+
+                obj->Grammar()->Name()+" "+LocalName()+"::_.autodoc.dependencies"+
+                I2("It should be of type ","Debería ser de tipo ")+"Set");
+          return(false);
+        }
+        BSet& dep = ::Set(obj); 
+        if(dep.Card())
+        { 
+          Warning(I2("Obsolete declaration of ","Definición obsoleta de ")+
+                obj->Grammar()->Name()+" "+LocalName()+"::_.autodoc.dependencies"+
+                I2("It should be empty due it will be filled with required packages",
+                   "Debería estar vacío porque se rellena automáticamente con los "
+                   "paquetes requeridos"));
+        }
+        int reqNum = CountRequiredPackage();
+        dep.Delete();
+        dep.PrepareStore(reqNum);
+        int d;
+        for(d=0; d<reqNum; d++)
+        {
+          BText txt = GetRequiredPackage(d);
+          dep.AddElement(new BContensText("",txt,""));
+        }
+      }
+      else  if(!fromOis && (name=="_.autodoc.name"))
+      {
+        if(obj->Grammar()!=GraText())
+        { 
+          Error(I2("Wrong declaration of ","Definición errónea de ")+
+                obj->Grammar()->Name()+" "+LocalName()+"::_.autodoc.name"+
+                I2("It should be of type ","Debería ser de tipo ")+"Text");
+          return(false);
+        }
+        BText& nt = Text(obj); 
+        if(nt.HasName() && (nt!=LocalName()))
+        {
+          Error(I2("Wrong declaration of ","Definición errónea de ")+
+                obj->Grammar()->Name()+" "+LocalName()+"::_.autodoc.name = \""+nt+"\";\n"+
+                I2("It should be ","Debería ser \"")+LocalName()+"\"");
+          return(false);
+        } 
+        nt = LocalName();
+      }
+
+    }
+    else if(name=="_this")
+    {
+      Error(I2("Reserved member name ",
+               "Nombre de miembro reservado  ")+ name+"\n"+
+              I2("Cannot build NameBlock ",
+                 "No se puede construir el NameBlock ")+Name());
+      return(false);
+    }
     private_[name] = obj;
   }
@@ -737,5 +784,5 @@
   {
     obj = set_[i+1];
-    AddElement(obj, false);
+    AddElement(obj, false, false);
   }
   return(CheckMembers());
@@ -1217,5 +1264,5 @@
 };
 //--------------------------------------------------------------------
-  int BRequiredPackage::CountRequiredPackage()
+  int BRequiredPackage::CountRequiredPackage() const
 //--------------------------------------------------------------------
 {
@@ -1224,5 +1271,5 @@
 
 //--------------------------------------------------------------------
-  const BText& BRequiredPackage::GetRequiredPackage(int k)
+  const BText& BRequiredPackage::GetRequiredPackage(int k) const
 //--------------------------------------------------------------------
 {
@@ -1243,5 +1290,5 @@
 
 //--------------------------------------------------------------------
-  int BNameBlock::CountRequiredPackage()
+  int BNameBlock::CountRequiredPackage() const
 //--------------------------------------------------------------------
 {
@@ -1251,5 +1298,5 @@
 
 //--------------------------------------------------------------------
-  const BText& BNameBlock::GetRequiredPackage(int k)
+  const BText& BNameBlock::GetRequiredPackage(int k) const
 //--------------------------------------------------------------------
 {
Index: tol/btol/bgrammar/tol_bnameblock.h
===================================================================
--- tol/btol/bgrammar/tol_bnameblock.h	(revision 2c3c5941303841d778f4731051d3890d99774091)
+++ tol/btol/bgrammar/tol_bnameblock.h	(revision 9bece5f3a41f376810f4a462f94861a62444411e)
@@ -58,6 +58,6 @@
   BRequiredPackage();
   bool AddRequiredPackage(const BText& name);
-  int CountRequiredPackage();
-  const BText& GetRequiredPackage(int k);
+  int CountRequiredPackage() const;
+  const BText& GetRequiredPackage(int k) const;
 };
 
@@ -143,5 +143,5 @@
   int BinRead (FILE*)       { return 0; }
 
-  bool AddElement(BSyntaxObject* obj, bool addToSet);
+  bool AddElement(BSyntaxObject* obj, bool addToSet, bool fromOis);
   bool CheckMembers();
   bool Build();
@@ -159,6 +159,6 @@
 
   bool AddRequiredPackage(const BText& name);
-  int CountRequiredPackage();
-  const BText& GetRequiredPackage(int k);
+  int CountRequiredPackage() const;
+  const BText& GetRequiredPackage(int k) const;
 
   static bool AddGlobalRequiredPackage(const BText& name);
