Index: tol/OIS/oisloader.cpp
===================================================================
--- tol/OIS/oisloader.cpp	(revision d4a11e1bd8d042b3ce96e7fd5af5615c67701c41)
+++ tol/OIS/oisloader.cpp	(revision e5448d2280299cb8b26766352c7baac9817b36ea)
@@ -104,5 +104,6 @@
   oisHasPriorityOnConflict_(true),
   lostSource_(false),
-  tolSources_()
+  tolSources_(),
+  localDependencies_(NULL)
 {  
 }
@@ -724,5 +725,5 @@
 
 //--------------------------------------------------------------------
-  BSyntaxObject* BOisLoader::ReadNextObject()
+  BSyntaxObject* BOisLoader::ReadNextObject(bool addToLocalDependencies)
 //--------------------------------------------------------------------
 {
@@ -752,21 +753,21 @@
     if(mode==BOBJECTMODE) 
     { 
-      return(gra->FindOperand(name,false)); 
+      result = gra->FindOperand(name,false); 
     }
     else if((mode==BBUILTINFUNMODE)||(mode==BUSERFUNMODE))
     { 
-      return(gra->FindOperator(name)); 
+      result = gra->FindOperator(name); 
     }
     else if(mode==BSTRUCTMODE) 
     { 
-      return(FindStruct(name)); 
+      result = FindStruct(name); 
     }
     else if(mode==BCLASSMODE) 
     { 
-      return(FindClass(name,-1)); 
+      result = FindClass(name,-1); 
     }
     else 
     { 
-      return(NullError("FATAL in BOisLoader::ReadNextObject()"));
+      result = NullError("FATAL in BOisLoader::ReadNextObject()");
     }
   }
@@ -817,5 +818,5 @@
         str->PutFunction(new BNewStruct(*str));
       }
-      return(readed_[found].PutObject(str));
+      result = str;
     }
     else if(mode==BCLASSMODE) 
@@ -825,5 +826,5 @@
       Ensure(Read(*cls,object_));
     //Std(BText("\nBOisLoader::ReadNextObject Reading Class ")+cls->Name()+" "+cls->FullName());
-      return(readed_[found].PutObject(cls));
+      result = cls;
     }
     else
@@ -1049,5 +1050,6 @@
           { 
             object_->SetPos(offset);
-            BSyntaxObject* r = ReadNextObject(); 
+            //CALL ReadNextObject 
+            BSyntaxObject* r = ReadNextObject(true); 
             if(!r || (r->Mode()!=BSTRUCTMODE)) 
             { 
@@ -1075,5 +1077,6 @@
             ERead(offset, set_);
             object_->SetPos(offset);
-            r = ReadNextObject();
+            //CALL ReadNextObject
+            r = ReadNextObject(false);
             if(!r) 
             { 
@@ -1163,5 +1166,6 @@
           { 
             object_->SetPos(offset);
-            BSyntaxObject* r = ReadNextObject(); 
+            //CALL ReadNextObject
+            BSyntaxObject* r = ReadNextObject(true); 
             if(!r || (r->Mode()!=BSTRUCTMODE)) 
             { 
@@ -1204,5 +1208,6 @@
             ERead(offset, set_);
             object_->SetPos(offset);
-            r = ReadNextObject();
+            //CALL ReadNextObject
+            r = ReadNextObject(false);
             if(!r) 
             { 
@@ -1287,5 +1292,6 @@
           {
             object_->SetPos(offset);
-            BSyntaxObject* r = ReadNextObject();
+            //CALL ReadNextObject
+            BSyntaxObject* r = ReadNextObject(true);
             if(!r || (r->Grammar()!=GraTimeSet())) 
             { 
@@ -1424,6 +1430,14 @@
       result->PutDescription(description); 
     }
-    return(readed_[found].PutObject(result));
-  }
+  }
+  if(result)
+  {
+    result = readed_[found].PutObject(result);
+    if(addToLocalDependencies) 
+    {
+      localDependencies_ = Cons(result, localDependencies_);
+    }
+  }
+  return(result);
 }
 
@@ -1580,8 +1594,13 @@
     Ensure(SearchOffsetInHierarchy(partial));
     object_->GetPos();
-
-
-    data_ = ReadNextObject();
+    //CALL ReadNextObject
+    localDependencies_ = NULL;
+    data_ = ReadNextObject(false);
     ok = (data_!=NULL);
+    if(ok)
+    {
+      BSet& set = Set(data_);
+      set.PutOisLocalDependencies(localDependencies_);
+    }
   }
   Close();
Index: tol/OIS/tol_oisloader.h
===================================================================
--- tol/OIS/tol_oisloader.h	(revision d4a11e1bd8d042b3ce96e7fd5af5615c67701c41)
+++ tol/OIS/tol_oisloader.h	(revision e5448d2280299cb8b26766352c7baac9817b36ea)
@@ -79,4 +79,5 @@
   BArray<BOffsetObject> readed_;
   BArray<BTOLDependency> tolSources_;
+  BList* localDependencies_;
   BSyntaxObject* data_;
   BText curHrchyPartialPath_;
@@ -145,5 +146,5 @@
   bool   SearchOffsetInHierarchy(const BSet* partial);
 
-  BSyntaxObject* ReadNextObject();
+  BSyntaxObject* ReadNextObject(bool addToLocalDependencies);
   BSyntaxObject* PutVariableName(BSyntaxObject* result, 
                                  const BText& name,
Index: tol/btol/set_type/set.cpp
===================================================================
--- tol/btol/set_type/set.cpp	(revision d4a11e1bd8d042b3ce96e7fd5af5615c67701c41)
+++ tol/btol/set_type/set.cpp	(revision e5448d2280299cb8b26766352c7baac9817b36ea)
@@ -47,5 +47,6 @@
 : sourcePath_(NULL), struct_(NIL), subType_(Generic), array_(0),
   indexByName_(NULL),
-  nameBlock_(NULL)
+  nameBlock_(NULL),
+  oisLocalDependencies_(NULL)
 {
 }
@@ -60,5 +61,6 @@
 : sourcePath_(NULL), struct_(NIL), subType_(Generic), array_(0),
   indexByName_(NULL),
-  nameBlock_(NULL)
+  nameBlock_(NULL),
+  oisLocalDependencies_(NULL)
 { 
   Copy(set);
@@ -74,5 +76,6 @@
 : sourcePath_(NULL), struct_(NIL), subType_(Generic), array_(0),
   indexByName_(NULL),
-  nameBlock_(NULL)
+  nameBlock_(NULL),
+  oisLocalDependencies_(NULL)
 { 
   RobStruct(arg,str,sub); 
@@ -88,4 +91,5 @@
 {
   Delete();
+  DESTROY(oisLocalDependencies_);
 }
 
Index: tol/btol/set_type/tol_bset.h
===================================================================
--- tol/btol/set_type/tol_bset.h	(revision d4a11e1bd8d042b3ce96e7fd5af5615c67701c41)
+++ tol/btol/set_type/tol_bset.h	(revision e5448d2280299cb8b26766352c7baac9817b36ea)
@@ -90,5 +90,5 @@
   BObjByIdxNameHash* indexByName_;
   const BNameBlock* nameBlock_;
-
+  BList* oisLocalDependencies_;
   static BText          orderError_;
   static BCode          order_;
@@ -150,5 +150,10 @@
                                     BText& errMsg) const;
 
-  BBool   Includes(BSyntaxObject*) const;
+  void PutOisLocalDependencies(BList* dep)
+  {
+    dep = oisLocalDependencies_;
+  };
+
+  BBool Includes(BSyntaxObject*) const;
 
   int BinWrite(FILE*) const { return 0; }
