From e1cd65f23651fc7fe0912cbd0c1723629c88c7e2 Mon Sep 17 00:00:00 2001
From: mpa <mpa@opencascade.com>
Date: Thu, 3 Jul 2014 16:18:44 +0400
Subject: [PATCH] Porting to new version of OCC

---
 .../AdvancedGUI_DividedCylinderDlg.cxx        |  1 -
 src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.cxx |  4 +-
 .../AdvancedGUI_SmoothingSurfaceDlg.cxx       |  1 -
 src/BasicGUI/BasicGUI_ArcDlg.cxx              |  1 -
 src/BasicGUI/BasicGUI_CircleDlg.cxx           |  1 -
 src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx     |  4 +-
 src/BlocksGUI/BlocksGUI_TrsfDlg.cxx           |  4 +-
 src/EntityGUI/EntityGUI_3DSketcherDlg.cxx     |  4 +-
 src/EntityGUI/EntityGUI_FieldDlg.cxx          |  5 +-
 src/EntityGUI/EntityGUI_FieldDlg.h            |  4 +-
 src/EntityGUI/EntityGUI_SubShapeDlg.cxx       |  8 +-
 src/EntityGUI/EntityGUI_SubShapeDlg.h         |  4 +-
 src/GEOMAlgo/GEOMAlgo_AlgoTools.cxx           | 45 +++++++++---
 src/GEOMAlgo/GEOMAlgo_AlgoTools.hxx           | 15 +++-
 src/GEOMAlgo/GEOMAlgo_AlgoTools_1.cxx         | 23 +++---
 .../GEOMAlgo_DataMapOfShapeMapOfShape.hxx     |  3 +-
 src/GEOMAlgo/GEOMAlgo_GetInPlace.cxx          | 73 +++++++++----------
 src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx        | 16 ++--
 src/GEOMAlgo/GEOMAlgo_GlueDetector.cxx        | 18 ++---
 src/GEOMAlgo/GEOMAlgo_GlueDetector.hxx        |  3 +-
 src/GEOMAlgo/GEOMAlgo_Gluer.cxx               | 14 ++--
 src/GEOMAlgo/GEOMAlgo_Gluer2_3.cxx            |  2 +-
 ...ndexedDataMapOfPassKeyShapeListOfShape.hxx |  4 +-
 ...IndexedDataMapOfShapeIndexedMapOfShape.hxx |  5 +-
 src/GEOMAlgo/GEOMAlgo_PassKey.hxx             |  4 +-
 src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx        | 11 ++-
 src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx        |  4 +-
 src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller_1.cxx   |  4 +-
 src/GEOMBase/GEOMBase_Helper.cxx              |  4 +-
 src/GEOMGUI/GEOMGUI_OCCSelector.cxx           | 12 +--
 src/GenerationGUI/GenerationGUI_PipeDlg.cxx   |  1 -
 src/GroupGUI/GroupGUI_GroupDlg.cxx            |  7 +-
 src/GroupGUI/GroupGUI_GroupDlg.h              |  4 +-
 src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx   |  4 +-
 src/MeasureGUI/MeasureGUI_NormaleDlg.cxx      |  6 +-
 src/MeasureGUI/MeasureGUI_PointDlg.cxx        |  4 +-
 src/OBJECT/GEOM_AISShape.cxx                  |  8 +-
 src/OBJECT/GEOM_AISShape.hxx                  |  2 +-
 src/OBJECT/GEOM_TopWireframeShape.cxx         |  2 +-
 src/OBJECT/GEOM_TopWireframeShape.hxx         |  2 +-
 src/OCC2VTK/OCC2VTK_internal.h                | 28 +++----
 src/OperationGUI/OperationGUI_ChamferDlg.cxx  |  4 +-
 src/OperationGUI/OperationGUI_ChamferDlg.h    |  8 +-
 .../OperationGUI_Fillet1d2dDlg.cxx            |  5 +-
 src/OperationGUI/OperationGUI_Fillet1d2dDlg.h | 10 +--
 src/OperationGUI/OperationGUI_FilletDlg.cxx   |  3 +-
 src/OperationGUI/OperationGUI_FilletDlg.h     |  6 +-
 src/RepairGUI/RepairGUI_CloseContourDlg.cxx   |  4 +-
 src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx     |  4 +-
 src/RepairGUI/RepairGUI_FuseEdgesDlg.cxx      |  4 +-
 src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx    |  4 +-
 src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx |  4 +-
 src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx  |  4 +-
 53 files changed, 221 insertions(+), 208 deletions(-)

diff --git a/src/AdvancedGUI/AdvancedGUI_DividedCylinderDlg.cxx b/src/AdvancedGUI/AdvancedGUI_DividedCylinderDlg.cxx
index 682433f1e..4b1a9f288 100644
--- a/src/AdvancedGUI/AdvancedGUI_DividedCylinderDlg.cxx
+++ b/src/AdvancedGUI/AdvancedGUI_DividedCylinderDlg.cxx
@@ -35,7 +35,6 @@
 #include <TopoDS_Shape.hxx>
 #include <TopoDS.hxx>
 #include <TopExp.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
 #include <GEOMImpl_Types.hxx>
diff --git a/src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.cxx b/src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.cxx
index 1eac6f55f..e5d9f4b6e 100644
--- a/src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.cxx
+++ b/src/AdvancedGUI/AdvancedGUI_PipeTShapeDlg.cxx
@@ -36,7 +36,7 @@
 #include <TopoDS_Shape.hxx>
 #include <TopoDS.hxx>
 #include <TopExp.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <gp_Pnt.hxx>
 
 #include <QTabWidget>
@@ -541,7 +541,7 @@ void AdvancedGUI_PipeTShapeDlg::SelectionIntoArgument()
       TopoDS_Shape aShape;
       if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull()) {
 
-        TColStd_IndexedMapOfInteger aMap;
+        NCollection_IndexedMap<Standard_Integer> aMap;
         aSelMgr->GetIndexes(anIO, aMap);
         if (aMap.Extent() == 1) { // Local Selection
           int anIndex = aMap(1);
diff --git a/src/AdvancedGUI/AdvancedGUI_SmoothingSurfaceDlg.cxx b/src/AdvancedGUI/AdvancedGUI_SmoothingSurfaceDlg.cxx
index 46be04e60..151af6348 100644
--- a/src/AdvancedGUI/AdvancedGUI_SmoothingSurfaceDlg.cxx
+++ b/src/AdvancedGUI/AdvancedGUI_SmoothingSurfaceDlg.cxx
@@ -33,7 +33,6 @@
 #include <TopoDS.hxx>
 #include <TopoDS_Iterator.hxx>
 #include <TopExp.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
 #include <GEOMImpl_Types.hxx>
diff --git a/src/BasicGUI/BasicGUI_ArcDlg.cxx b/src/BasicGUI/BasicGUI_ArcDlg.cxx
index 4f0d910de..fff94014c 100644
--- a/src/BasicGUI/BasicGUI_ArcDlg.cxx
+++ b/src/BasicGUI/BasicGUI_ArcDlg.cxx
@@ -35,7 +35,6 @@
 #include <SalomeApp_Application.h>
 #include <LightApp_SelectionMgr.h>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Edge.hxx>
diff --git a/src/BasicGUI/BasicGUI_CircleDlg.cxx b/src/BasicGUI/BasicGUI_CircleDlg.cxx
index bd5781fdc..54cbb52be 100644
--- a/src/BasicGUI/BasicGUI_CircleDlg.cxx
+++ b/src/BasicGUI/BasicGUI_CircleDlg.cxx
@@ -36,7 +36,6 @@
 #include <SalomeApp_Application.h>
 #include <LightApp_SelectionMgr.h>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Edge.hxx>
diff --git a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx b/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx
index 528d409c8..dd10a7f8c 100644
--- a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx
+++ b/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx
@@ -44,7 +44,7 @@
 #include <gp_Dir.hxx>
 #include <TColStd_MapOfInteger.hxx>
 #include <TopoDS_Shape.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
 // QT Includes
@@ -328,7 +328,7 @@ void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument()
     if ( aRes && !aSelectedObject->_is_nil() ) {
       TopoDS_Shape aShape;
       if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
-        TColStd_IndexedMapOfInteger aMap;
+        NCollection_IndexedMap<Standard_Integer> aMap;
         aSelMgr->GetIndexes(aSelList.First(), aMap);
         if ( aMap.Extent() == 1 ) {
           int anIndex = aMap( 1 );
diff --git a/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx b/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx
index 52c25e0d9..98af0600a 100644
--- a/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx
+++ b/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx
@@ -40,7 +40,7 @@
 #include <OCCViewer_ViewModel.h>
 
 // OCCT Includes
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 //=================================================================================
 // class    : BlocksGUI_TrsfDlg()
@@ -262,7 +262,7 @@ void BlocksGUI_TrsfDlg::SelectionIntoArgument()
       anObj = GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
       if ( GEOMBase::IsShape(anObj) ) {
         aName = GEOMBase::GetName(anObj);
-        TColStd_IndexedMapOfInteger anIndexes;
+        NCollection_IndexedMap<Standard_Integer> anIndexes;
         aSelMgr->GetIndexes(aSelList.First(), anIndexes);
 
         if (anIndexes.Extent() == 1) {
diff --git a/src/EntityGUI/EntityGUI_3DSketcherDlg.cxx b/src/EntityGUI/EntityGUI_3DSketcherDlg.cxx
index 609b7e8a3..af08a0464 100755
--- a/src/EntityGUI/EntityGUI_3DSketcherDlg.cxx
+++ b/src/EntityGUI/EntityGUI_3DSketcherDlg.cxx
@@ -52,7 +52,7 @@
 
 //OCCT includes
 #include <TopoDS.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <BRepBuilderAPI_MakeVertex.hxx>
 #include <BRepBuilderAPI_MakePolygon.hxx>
 #include <BRepBuilderAPI_MakeEdge.hxx>
@@ -761,7 +761,7 @@ void EntityGUI_3DSketcherDlg::SelectionIntoArgument()
       TopoDS_Shape aShape;
       if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE)) {
         // Explore the shape if its a local selection
-        TColStd_IndexedMapOfInteger aMap;
+        NCollection_IndexedMap<Standard_Integer> aMap;
         aSelMgr->GetIndexes(aSelList.First(), aMap);
         if (aMap.Extent() == 1) {
           int anIndex = aMap(1);
diff --git a/src/EntityGUI/EntityGUI_FieldDlg.cxx b/src/EntityGUI/EntityGUI_FieldDlg.cxx
index cead457e7..08f9ca564 100644
--- a/src/EntityGUI/EntityGUI_FieldDlg.cxx
+++ b/src/EntityGUI/EntityGUI_FieldDlg.cxx
@@ -69,7 +69,6 @@
 #include <TopExp.hxx>
 #include <TopExp_Explorer.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
 #include <TColStd_MapOfInteger.hxx>
 #include <TColStd_DataMapIteratorOfDataMapOfIntegerInteger.hxx>
 
@@ -1206,7 +1205,7 @@ void EntityGUI_FieldDlg::SelectionIntoArgument()
     myCurStepTable->blockSignals(true);
 
     QList< int > rowsToSelect;
-    TColStd_IndexedMapOfInteger aMapIndex;
+    NCollection_IndexedMap<Standard_Integer> aMapIndex;
     if ( getSelectedSubshapes(aMapIndex ))
       for (int ii = 1, nn = aMapIndex.Extent(); ii <= nn; ii++) {
         const int shapeID = aMapIndex( ii );
@@ -1442,7 +1441,7 @@ void EntityGUI_FieldDlg::showCurStep()
 // function : getSelectedSubshapes
 // purpose  :
 //=================================================================================
-int EntityGUI_FieldDlg::getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMapIndex)
+int EntityGUI_FieldDlg::getSelectedSubshapes (NCollection_IndexedMap<Standard_Integer>& theMapIndex)
 {
   theMapIndex.Clear();
 
diff --git a/src/EntityGUI/EntityGUI_FieldDlg.h b/src/EntityGUI/EntityGUI_FieldDlg.h
index 0fab30729..10be4b9b3 100644
--- a/src/EntityGUI/EntityGUI_FieldDlg.h
+++ b/src/EntityGUI/EntityGUI_FieldDlg.h
@@ -30,7 +30,7 @@
 
 #include <TopAbs_ShapeEnum.hxx>
 #include <TColStd_DataMapOfIntegerInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
 #include <QMap>
@@ -101,7 +101,7 @@ private:
   int                                 getNbComps() const;
   void                                updateShapeIDs();
   void                                updateDims(int curDim=-1);
-  int                                 getSelectedSubshapes (TColStd_IndexedMapOfInteger& map);
+  int                                 getSelectedSubshapes (NCollection_IndexedMap<Standard_Integer>& map);
 
 private:
   bool                                myIsCreation;
diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx
index 1b2060f3f..2896ab191 100644
--- a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx
+++ b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx
@@ -49,8 +49,6 @@
 #include <TopTools_MapOfShape.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
-
 #include <QMessageBox>
 
 #include <GEOMImpl_Types.hxx>
@@ -653,7 +651,7 @@ void EntityGUI_SubShapeDlg::showOnlySelected()
 // function : getSelectedSubshapes
 // purpose  :
 //=================================================================================
-int EntityGUI_SubShapeDlg::getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMapIndex)
+int EntityGUI_SubShapeDlg::getSelectedSubshapes (NCollection_IndexedMap<Standard_Integer>& theMapIndex)
 {
   theMapIndex.Clear();
 
@@ -824,7 +822,7 @@ bool EntityGUI_SubShapeDlg::isValid (QString& msg)
   if (isAllSubShapes())
     isOk = true;
   else {
-    TColStd_IndexedMapOfInteger aMapIndex;
+    NCollection_IndexedMap<Standard_Integer> aMapIndex;
     int nbSel = getSelectedSubshapes(aMapIndex);
     isOk = nbSel > 0;
 
@@ -845,7 +843,7 @@ bool EntityGUI_SubShapeDlg::execute (ObjectList& objects)
 
   if (!isAllSubShapes()) {
     // manual selection
-    TColStd_IndexedMapOfInteger aMapIndex;
+    NCollection_IndexedMap<Standard_Integer> aMapIndex;
     int nbSel = getSelectedSubshapes(aMapIndex);
 
     if (nbSel > 0) {
diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.h b/src/EntityGUI/EntityGUI_SubShapeDlg.h
index 14275c83e..ace672743 100644
--- a/src/EntityGUI/EntityGUI_SubShapeDlg.h
+++ b/src/EntityGUI/EntityGUI_SubShapeDlg.h
@@ -29,7 +29,7 @@
 
 #include <GEOMBase_Skeleton.h>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 class DlgRef_1Sel1List1Check3Btn;
 
@@ -77,7 +77,7 @@ private:
                                                          const int) const;
 
   void                                activateSelection();
-  int                                 getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMapIndex);
+  int                                 getSelectedSubshapes (NCollection_IndexedMap<Standard_Integer>& theMapIndex);
   void                                updateButtonState();
   bool                                isAllSubShapes() const;
   int                                 shapeType() const;
diff --git a/src/GEOMAlgo/GEOMAlgo_AlgoTools.cxx b/src/GEOMAlgo/GEOMAlgo_AlgoTools.cxx
index 5adf8979d..c6f412a5e 100755
--- a/src/GEOMAlgo/GEOMAlgo_AlgoTools.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_AlgoTools.cxx
@@ -74,9 +74,8 @@
 #include <IntTools_Tools.hxx>
 
 #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
+#include <NCollection_List.hxx>
 
-#include <TopTools_ListIteratorOfListOfShape.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TopAbs_ShapeEnum.hxx>
 
@@ -632,7 +631,7 @@ void GEOMAlgo_AlgoTools::PointOnShape(const TopoDS_Shape& aS,
 //=======================================================================
 Standard_Integer GEOMAlgo_AlgoTools::FindSDShapes
   (const TopoDS_Shape& aE1,
-   const TopTools_ListOfShape& aLE,
+   const NCollection_List<TopoDS_Shape>& aLE,
    const Standard_Real aTol,
    TopTools_ListOfShape& aLESD,
 #if OCC_VERSION_LARGE > 0x06070100
@@ -645,7 +644,7 @@ Standard_Integer GEOMAlgo_AlgoTools::FindSDShapes
   Standard_Boolean bIsDone;
   Standard_Real aTol2, aD2;
   gp_Pnt aP1, aP2;
-  TopTools_ListIteratorOfListOfShape aIt;
+  NCollection_List<TopoDS_Shape>::Iterator aIt;
   //
   aTol2=aTol*aTol;
   GEOMAlgo_AlgoTools::PointOnShape(aE1, aP1);
@@ -676,7 +675,7 @@ Standard_Integer GEOMAlgo_AlgoTools::FindSDShapes
 //purpose  :
 //=======================================================================
 Standard_Integer GEOMAlgo_AlgoTools::FindSDShapes
-  (const TopTools_ListOfShape& aLE,
+  (const NCollection_List<TopoDS_Shape>& aLE,
    const Standard_Real aTol,
    TopTools_IndexedDataMapOfShapeListOfShape& aMEE,
 #if OCC_VERSION_LARGE > 0x06070100
@@ -688,7 +687,8 @@ Standard_Integer GEOMAlgo_AlgoTools::FindSDShapes
 {
   Standard_Integer aNbE, aNbEProcessed, aNbESD, iErr;
   TopTools_ListOfShape aLESD;
-  TopTools_ListIteratorOfListOfShape aIt, aIt1;
+  NCollection_List<TopoDS_Shape>::Iterator aIt;
+  TopTools_ListIteratorOfListOfShape aIt1;
   TopTools_IndexedMapOfShape aMProcessed;
   TopAbs_ShapeEnum aType;
   //
@@ -766,7 +766,7 @@ Standard_Integer GEOMAlgo_AlgoTools::RefineSDShapes
   //
   aNbE=aMPKLE.Extent();
   for (i=1; i<=aNbE; ++i) {
-    TopTools_ListOfShape& aLSDE=aMPKLE.ChangeFromIndex(i);
+    NCollection_List<TopoDS_Shape>& aLSDE=aMPKLE.ChangeFromIndex(i);
     //
     aMEE.Clear();
     iErr=GEOMAlgo_AlgoTools::FindSDShapes(aLSDE, aTol, aMEE, aCtx);
@@ -780,15 +780,17 @@ Standard_Integer GEOMAlgo_AlgoTools::RefineSDShapes
     }
     //
     for (j=1; j<=aNbEE; ++j) {
-      TopTools_ListOfShape& aLEE=aMEE.ChangeFromIndex(j);
+      TopTools_ListOfShape& aTopToolsLEE = aMEE.ChangeFromIndex(j);
       //
       if (j==1) {
+        NCollection_List<TopoDS_Shape> aLEE;
+        ConvertTopToolsListOfShapeToNCollectionList( aTopToolsLEE, aLEE);
         aLSDE.Clear();
         aLSDE.Append(aLEE);
       }
       else {
-        const TopoDS_Shape& aE1=aLEE.First();
-        aMEToAdd.Add(aE1, aLEE);
+        const TopoDS_Shape& aE1=aTopToolsLEE.First();
+        aMEToAdd.Add(aE1, aTopToolsLEE);
       }
     }
   }
@@ -802,7 +804,9 @@ Standard_Integer GEOMAlgo_AlgoTools::RefineSDShapes
     GEOMAlgo_PassKeyShape aPKE1;
     //
     const TopoDS_Shape& aE1=aMEToAdd.FindKey(i);
-    const TopTools_ListOfShape& aLE=aMEToAdd(i);
+    NCollection_List<TopoDS_Shape> aConvLE;
+    GEOMAlgo_AlgoTools::ConvertTopToolsListOfShapeToNCollectionList(aMEToAdd(i), aConvLE);
+    const NCollection_List<TopoDS_Shape>& aLE=aConvLE;
     //
     aPKE1.SetShapes(aE1);
     aMPKLE.Add(aPKE1, aLE);
@@ -1022,3 +1026,22 @@ Standard_Integer GEOMAlgo_AlgoTools::PntInFace(const TopoDS_Face& aF,
   //
   return iErr;
 }
+
+void GEOMAlgo_AlgoTools::ConvertTopToolsListOfShapeToNCollectionList(const TopTools_ListOfShape& aLS,
+                                                                NCollection_List<TopoDS_Shape>& aNLS)
+{
+  TopTools_ListIteratorOfListOfShape aIt;
+  aIt.Initialize(aLS);
+  for (; aIt.More(); aIt.Next())
+    aNLS.Append(aIt.Value());
+}
+
+
+void GEOMAlgo_AlgoTools::ConvertNCollectionListToTopToolsListOfShape(const NCollection_List<TopoDS_Shape>& aLS,
+                                                                     TopTools_ListOfShape& aNLS)
+{
+  NCollection_List<TopoDS_Shape>::Iterator aIt;
+  aIt.Initialize(aLS);
+  for (; aIt.More(); aIt.Next())
+    aNLS.Append(aIt.Value());
+}
diff --git a/src/GEOMAlgo/GEOMAlgo_AlgoTools.hxx b/src/GEOMAlgo/GEOMAlgo_AlgoTools.hxx
index 7fba7d88c..326e77cd3 100755
--- a/src/GEOMAlgo/GEOMAlgo_AlgoTools.hxx
+++ b/src/GEOMAlgo/GEOMAlgo_AlgoTools.hxx
@@ -51,9 +51,10 @@
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Edge.hxx>
 
+#include <NCollection_List.hxx>
 #include <TopTools_ListOfShape.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
 #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
 #include <TopTools_IndexedDataMapOfShapeShape.hxx>
 
 #include <GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx>
@@ -102,7 +103,7 @@ class GEOMAlgo_AlgoTools  {
        ) ;
 
   Standard_EXPORT
-    static  Standard_Integer FindSDShapes(const TopTools_ListOfShape& aLE,
+    static  Standard_Integer FindSDShapes(const NCollection_List<TopoDS_Shape>& aLE,
 					  const Standard_Real aTol,
 					  TopTools_IndexedDataMapOfShapeListOfShape& aMEE,
 #if OCC_VERSION_LARGE > 0x06070100
@@ -113,7 +114,7 @@ class GEOMAlgo_AlgoTools  {
 					  ) ;
   Standard_EXPORT
     static  Standard_Integer FindSDShapes(const TopoDS_Shape& aE1,
-					  const TopTools_ListOfShape& aLE,
+					  const NCollection_List<TopoDS_Shape>& aLE,
 					  const Standard_Real aTol,
 					  TopTools_ListOfShape& aLESD,
 #if OCC_VERSION_LARGE > 0x06070100
@@ -247,5 +248,13 @@ class GEOMAlgo_AlgoTools  {
     static  void CopyShape(const TopoDS_Shape& aS,
 			   TopoDS_Shape& aSC,
 			   TopTools_IndexedDataMapOfShapeShape& aMSS) ;
+
+  Standard_EXPORT
+    static void ConvertTopToolsListOfShapeToNCollectionList(const TopTools_ListOfShape&,
+                                                            NCollection_List<TopoDS_Shape>&) ;
+
+  Standard_EXPORT
+    static void ConvertNCollectionListToTopToolsListOfShape(const NCollection_List<TopoDS_Shape>&,
+                                                            TopTools_ListOfShape&) ;
 };
 #endif
diff --git a/src/GEOMAlgo/GEOMAlgo_AlgoTools_1.cxx b/src/GEOMAlgo/GEOMAlgo_AlgoTools_1.cxx
index bfd37a138..3d2cd059a 100755
--- a/src/GEOMAlgo/GEOMAlgo_AlgoTools_1.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_AlgoTools_1.cxx
@@ -30,15 +30,14 @@
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <GEOMAlgo_CoupleOfShapes.hxx>
 #include <TopoDS_Shape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
 
 
 
 static
   void ProcessBlock(const TopoDS_Shape& aF,
                     const GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape& aMCV,
-                    TopTools_IndexedMapOfShape& aProcessed,
-                    TopTools_IndexedMapOfShape& aChain);
+                    NCollection_IndexedMap<TopoDS_Shape>& aProcessed,
+                    NCollection_IndexedMap<TopoDS_Shape>& aChain);
 
 //=======================================================================
 // function: FindChains
@@ -59,24 +58,24 @@ void GEOMAlgo_AlgoTools::FindChains(const GEOMAlgo_ListOfCoupleOfShapes& aLCS,
     //
     //
     if (aMCV.Contains(aF1)) {
-      TopTools_IndexedMapOfShape& aMV=aMCV.ChangeFromKey(aF1);
+      NCollection_IndexedMap<TopoDS_Shape>& aMV=aMCV.ChangeFromKey(aF1);
       aMV.Add(aF1);
       aMV.Add(aF2);
     }
     else {
-      TopTools_IndexedMapOfShape aMV;
+      NCollection_IndexedMap<TopoDS_Shape> aMV;
       aMV.Add(aF1);
       aMV.Add(aF2);
       aMCV.Add(aF1, aMV);
     }
     //
     if (aMCV.Contains(aF2)) {
-      TopTools_IndexedMapOfShape& aMV=aMCV.ChangeFromKey(aF2);
+      NCollection_IndexedMap<TopoDS_Shape>& aMV=aMCV.ChangeFromKey(aF2);
       aMV.Add(aF1);
       aMV.Add(aF2);
     }
     else {
-      TopTools_IndexedMapOfShape aMV;
+      NCollection_IndexedMap<TopoDS_Shape> aMV;
       aMV.Add(aF1);
       aMV.Add(aF2);
       aMCV.Add(aF2, aMV);
@@ -92,7 +91,7 @@ void GEOMAlgo_AlgoTools::FindChains(const GEOMAlgo_IndexedDataMapOfShapeIndexedM
 				    GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape& aMapChains)
 {
   Standard_Integer  i, j, aNbCV, aNbV;
-  TopTools_IndexedMapOfShape aProcessed, aChain;
+  NCollection_IndexedMap<TopoDS_Shape> aProcessed, aChain;
   //
   aNbCV=aMCV.Extent();
   for (i=1; i<=aNbCV; ++i) {
@@ -104,7 +103,7 @@ void GEOMAlgo_AlgoTools::FindChains(const GEOMAlgo_IndexedDataMapOfShapeIndexedM
     aProcessed.Add(aF);
     aChain.Add(aF);
     //
-    const TopTools_IndexedMapOfShape& aMV=aMCV(i);
+    const NCollection_IndexedMap<TopoDS_Shape>& aMV=aMCV(i);
     aNbV=aMV.Extent();
     for (j=1; j<=aNbV; ++j) {
       const TopoDS_Shape& aFx=aMV(j);
@@ -120,8 +119,8 @@ void GEOMAlgo_AlgoTools::FindChains(const GEOMAlgo_IndexedDataMapOfShapeIndexedM
 //=======================================================================
 void ProcessBlock(const TopoDS_Shape& aF,
                   const GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape& aMCV,
-                  TopTools_IndexedMapOfShape& aProcessed,
-                  TopTools_IndexedMapOfShape& aChain)
+                  NCollection_IndexedMap<TopoDS_Shape>& aProcessed,
+                  NCollection_IndexedMap<TopoDS_Shape>& aChain)
 {
   Standard_Integer j, aNbV;
   //
@@ -131,7 +130,7 @@ void ProcessBlock(const TopoDS_Shape& aF,
   aProcessed.Add(aF);
   aChain.Add(aF);
   //
-  const TopTools_IndexedMapOfShape& aMV=aMCV.FindFromKey(aF);
+  const NCollection_IndexedMap<TopoDS_Shape>& aMV=aMCV.FindFromKey(aF);
   aNbV=aMV.Extent();
   for (j=1; j<=aNbV; ++j) {
     const TopoDS_Shape& aFx=aMV(j);
diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeMapOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeMapOfShape.hxx
index 45678ac90..bf16e5833 100644
--- a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeMapOfShape.hxx
+++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeMapOfShape.hxx
@@ -32,9 +32,10 @@
 
 #define _NCollection_MapHasher
 #include <NCollection_DataMap.hxx>
+#include <NCollection_Map.hxx>
 
 
-typedef NCollection_DataMap<TopoDS_Shape, TopTools_MapOfShape, TopTools_ShapeMapHasher> GEOMAlgo_DataMapOfShapeMapOfShape;
+typedef NCollection_DataMap<TopoDS_Shape, NCollection_Map<TopoDS_Shape>, TopTools_ShapeMapHasher> GEOMAlgo_DataMapOfShapeMapOfShape;
 typedef GEOMAlgo_DataMapOfShapeMapOfShape::Iterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeMapOfShape;
 
 #undef _NCollection_MapHasher
diff --git a/src/GEOMAlgo/GEOMAlgo_GetInPlace.cxx b/src/GEOMAlgo/GEOMAlgo_GetInPlace.cxx
index 718b25f67..3b7dbdcb9 100644
--- a/src/GEOMAlgo/GEOMAlgo_GetInPlace.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_GetInPlace.cxx
@@ -55,8 +55,7 @@
 #include <TopTools_DataMapOfShapeListOfShape.hxx>
 #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_MapOfShape.hxx>
-#include <TopTools_MapIteratorOfMapOfShape.hxx>
+#include <NCollection_Map.hxx>
 
 #include <GEOMAlgo_BoxBndTree.hxx>
 #include <GEOMAlgo_CoupleOfShapes.hxx>
@@ -412,7 +411,7 @@ void GEOMAlgo_GetInPlace::FillEdgesOn(const TopoDS_Shape &theShape)
   Standard_Integer i, aNbE;
   TopoDS_Iterator aIt;
   TopTools_IndexedMapOfShape aME;
-  TopTools_MapIteratorOfMapOfShape aItMS;
+  NCollection_Map<TopoDS_Shape>::Iterator aItMS;
   //
   TopExp::MapShapes(theShape, TopAbs_EDGE, aME);
   aNbE=aME.Extent();
@@ -426,7 +425,7 @@ void GEOMAlgo_GetInPlace::FillEdgesOn(const TopoDS_Shape &theShape)
     for (; aIt.More(); aIt.Next()) {
       const TopoDS_Shape& aV1=aIt.Value();
       if (myShapesOn.IsBound(aV1)) {
-        const TopTools_MapOfShape& aMSOn=myShapesOn.Find(aV1);
+        const NCollection_Map<TopoDS_Shape>& aMSOn=myShapesOn.Find(aV1);
         //aNbSOn=aMSOn.Extent();
         aItMS.Initialize(aMSOn);
         for (; aItMS.More(); aItMS.Next()) {
@@ -456,7 +455,7 @@ void GEOMAlgo_GetInPlace::PerformVE()
     const TopoDS_Shape& aV2=aCS.Shape2();
     //
     if (myShapesOn.IsBound(aE1)) {
-      const TopTools_MapOfShape& aMSOn=myShapesOn.Find(aE1);
+      const NCollection_Map<TopoDS_Shape>& aMSOn=myShapesOn.Find(aE1);
       if (aMSOn.Contains(aV2)) {
         continue;
       }
@@ -508,12 +507,12 @@ void GEOMAlgo_GetInPlace::PerformEE(const TopoDS_Shape &theE1,
 {
   Standard_Boolean bHasOn, bHasIn, bFound;
   TopoDS_Iterator aIt;
-  TopTools_MapOfShape aMSX;
+  NCollection_Map<TopoDS_Shape> aMSX;
   //
   bHasOn=myShapesOn.IsBound(theE1);
   bHasIn=myShapesIn.IsBound(theE1);
-  const TopTools_MapOfShape& aMSOn=(bHasOn) ? myShapesOn.Find(theE1) : aMSX;
-  const TopTools_MapOfShape& aMSIn=(bHasIn) ? myShapesIn.Find(theE1) : aMSX;
+  const NCollection_Map<TopoDS_Shape>& aMSOn=(bHasOn) ? myShapesOn.Find(theE1) : aMSX;
+  const NCollection_Map<TopoDS_Shape>& aMSIn=(bHasIn) ? myShapesIn.Find(theE1) : aMSX;
   //
   bFound=Standard_True;
   aIt.Initialize(theE2);
@@ -544,7 +543,7 @@ void GEOMAlgo_GetInPlace::PerformVF()
 {
   Standard_Boolean bHasOn, bHasIn, bFound;
   Standard_Integer i, aNbE;
-  TopTools_MapOfShape aMSX;
+  NCollection_Map<TopoDS_Shape> aMSX;
   TopTools_IndexedMapOfShape aME;
   //
   myErrorStatus=0;
@@ -569,8 +568,8 @@ void GEOMAlgo_GetInPlace::PerformVF()
       //
       bHasOn=myShapesOn.IsBound(aE1);
       bHasIn=myShapesIn.IsBound(aE1);
-      const TopTools_MapOfShape& aMSOn=(bHasOn) ? myShapesOn.Find(aE1) : aMSX;
-      const TopTools_MapOfShape& aMSIn=(bHasIn) ? myShapesIn.Find(aE1) : aMSX;
+      const NCollection_Map<TopoDS_Shape>& aMSOn=(bHasOn) ? myShapesOn.Find(aE1) : aMSX;
+      const NCollection_Map<TopoDS_Shape>& aMSIn=(bHasIn) ? myShapesIn.Find(aE1) : aMSX;
       bFound= (aMSOn.Contains(aV2) || aMSIn.Contains(aV2));
       if (bFound) {
         break;
@@ -599,7 +598,7 @@ void GEOMAlgo_GetInPlace::FillFacesOn(const TopoDS_Shape &theShape)
   Standard_Integer i, j, aNbF, aNbE;
   TopoDS_Iterator aIt;
   TopTools_IndexedMapOfShape aMF, aME;
-  TopTools_MapIteratorOfMapOfShape aItMS;
+  NCollection_Map<TopoDS_Shape>::Iterator aItMS;
   //
   TopExp::MapShapes(theShape, TopAbs_FACE, aMF);
   aNbF=aMF.Extent();
@@ -616,7 +615,7 @@ void GEOMAlgo_GetInPlace::FillFacesOn(const TopoDS_Shape &theShape)
       }
       //
       if (myShapesOn.IsBound(aE1)) {
-        const TopTools_MapOfShape& aMSOn=myShapesOn.Find(aE1);
+        const NCollection_Map<TopoDS_Shape>& aMSOn=myShapesOn.Find(aE1);
         aItMS.Initialize(aMSOn);
         for (; aItMS.More(); aItMS.Next()) {
           const TopoDS_Shape& aS2=aItMS.Key();
@@ -625,7 +624,7 @@ void GEOMAlgo_GetInPlace::FillFacesOn(const TopoDS_Shape &theShape)
       }
       //
       if (myShapesIn.IsBound(aE1)) {
-        const TopTools_MapOfShape& aMSIn=myShapesIn.Find(aE1);
+        const NCollection_Map<TopoDS_Shape>& aMSIn=myShapesIn.Find(aE1);
         aItMS.Initialize(aMSIn);
         for (; aItMS.More(); aItMS.Next()) {
           const TopoDS_Shape& aS2=aItMS.Key();
@@ -643,7 +642,7 @@ void GEOMAlgo_GetInPlace::PerformEF()
 {
   Standard_Boolean  bFound, bHasOnF, bHasInF;
   TopoDS_Iterator aIt;
-  TopTools_MapOfShape aMSX;
+  NCollection_Map<TopoDS_Shape> aMSX;
   //
   myErrorStatus=0;
   myWarningStatus=0;
@@ -656,7 +655,7 @@ void GEOMAlgo_GetInPlace::PerformEF()
     //
     // 1.
     bHasOnF=myShapesOn.IsBound(aF1);
-    const TopTools_MapOfShape& aMSOnF=(bHasOnF) ? myShapesOn.Find(aF1) : aMSX;
+    const NCollection_Map<TopoDS_Shape>& aMSOnF=(bHasOnF) ? myShapesOn.Find(aF1) : aMSX;
     bFound=aMSOnF.Contains(aE2);
     if (bFound) {
       continue;
@@ -664,7 +663,7 @@ void GEOMAlgo_GetInPlace::PerformEF()
     //
     // 2.
     bHasInF=myShapesIn.IsBound(aF1);
-    const TopTools_MapOfShape& aMSInF=(bHasInF) ? myShapesIn.Find(aF1) : aMSX;
+    const NCollection_Map<TopoDS_Shape>& aMSInF=(bHasInF) ? myShapesIn.Find(aF1) : aMSX;
     //
     aIt.Initialize(aE2);
     for (; aIt.More(); aIt.Next()) {
@@ -724,14 +723,14 @@ void GEOMAlgo_GetInPlace::PerformFF(const TopoDS_Shape &theF1,
 {
   Standard_Boolean  bFound, bHasOnF, bHasInF;
   Standard_Integer i, aNbS2;
-  TopTools_MapOfShape aMSX;
+  NCollection_Map<TopoDS_Shape> aMSX;
   TopTools_IndexedMapOfShape aMS2;
   //
   bHasOnF=myShapesOn.IsBound(theF1);
-  const TopTools_MapOfShape& aMSOnF=(bHasOnF) ? myShapesOn.Find(theF1) : aMSX;
+  const NCollection_Map<TopoDS_Shape>& aMSOnF=(bHasOnF) ? myShapesOn.Find(theF1) : aMSX;
   //
   bHasInF=myShapesIn.IsBound(theF1);
-  const TopTools_MapOfShape& aMSInF=(bHasInF) ? myShapesIn.Find(theF1) : aMSX;
+  const NCollection_Map<TopoDS_Shape>& aMSInF=(bHasInF) ? myShapesIn.Find(theF1) : aMSX;
   //
   MapBRepShapes(theF2, aMS2);
   //
@@ -767,7 +766,7 @@ void GEOMAlgo_GetInPlace::FillSolidsOn(const TopoDS_Shape &theShape)
 {
   Standard_Integer i, j, aNbS, aNbF;
   TopTools_IndexedMapOfShape aMS, aMF;
-  TopTools_MapIteratorOfMapOfShape aItMS;
+  NCollection_Map<TopoDS_Shape>::Iterator aItMS;
   //
   TopExp::MapShapes(theShape, TopAbs_SOLID, aMS);
   //
@@ -782,7 +781,7 @@ void GEOMAlgo_GetInPlace::FillSolidsOn(const TopoDS_Shape &theShape)
       const TopoDS_Shape& aF1=aMF(j);
       //
       if (myShapesOn.IsBound(aF1)) {
-        const TopTools_MapOfShape& aMSOn=myShapesOn.Find(aF1);
+        const NCollection_Map<TopoDS_Shape>& aMSOn=myShapesOn.Find(aF1);
         aItMS.Initialize(aMSOn);
         for (; aItMS.More(); aItMS.Next()) {
           const TopoDS_Shape& aS2=aItMS.Key();
@@ -791,7 +790,7 @@ void GEOMAlgo_GetInPlace::FillSolidsOn(const TopoDS_Shape &theShape)
       }
       //
       if (myShapesIn.IsBound(aF1)) {
-        const TopTools_MapOfShape& aMSIn=myShapesIn.Find(aF1);
+        const NCollection_Map<TopoDS_Shape>& aMSIn=myShapesIn.Find(aF1);
         aItMS.Initialize(aMSIn);
         for (; aItMS.More(); aItMS.Next()) {
           const TopoDS_Shape& aS2=aItMS.Key();
@@ -808,7 +807,7 @@ void GEOMAlgo_GetInPlace::FillSolidsOn(const TopoDS_Shape &theShape)
 void GEOMAlgo_GetInPlace::PerformZF()
 {
   Standard_Boolean  bFound, bHasOnF;
-  TopTools_MapOfShape aMSX;
+  NCollection_Map<TopoDS_Shape> aMSX;
   //
   myErrorStatus=0;
   myWarningStatus=0;
@@ -820,7 +819,7 @@ void GEOMAlgo_GetInPlace::PerformZF()
     const TopoDS_Shape& aF2=aCS.Shape2();
     //
     bHasOnF=myShapesOn.IsBound(aSo1);
-    const TopTools_MapOfShape& aMSOnF=(bHasOnF) ? myShapesOn.Find(aSo1) : aMSX;
+    const NCollection_Map<TopoDS_Shape>& aMSOnF=(bHasOnF) ? myShapesOn.Find(aSo1) : aMSX;
     bFound=aMSOnF.Contains(aF2);
     if (bFound) {
       continue;
@@ -872,14 +871,14 @@ void GEOMAlgo_GetInPlace::PerformZZ(const TopoDS_Shape &theSo1,
 {
   Standard_Boolean bFound, bHasOn, bHasIn;
   Standard_Integer i, aNbS2, iCntOn, iCntIn, iCntOut;
-  TopTools_MapOfShape aMSX;
+  NCollection_Map<TopoDS_Shape> aMSX;
   TopTools_IndexedMapOfShape aMS2;
   //
   bHasOn=myShapesOn.IsBound(theSo1);
-  const TopTools_MapOfShape& aMSOn=(bHasOn) ? myShapesOn.Find(theSo1) : aMSX;
+  const NCollection_Map<TopoDS_Shape>& aMSOn=(bHasOn) ? myShapesOn.Find(theSo1) : aMSX;
   //
   bHasIn=myShapesIn.IsBound(theSo1);
-  const TopTools_MapOfShape& aMSIn=(bHasIn) ? myShapesIn.Find(theSo1) : aMSX;
+  const NCollection_Map<TopoDS_Shape>& aMSIn=(bHasIn) ? myShapesIn.Find(theSo1) : aMSX;
   //
   TopExp::MapShapes(theSo2, TopAbs_FACE, aMS2);
   //
@@ -982,9 +981,9 @@ void GEOMAlgo_GetInPlace::FillImgSimple
     const TopoDS_Shape& aS = aMS(i);
 
     if (aShapesInOn.IsBound(aS)) {
-      const TopTools_MapOfShape& aMSx = aShapesInOn.Find(aS);
+      const NCollection_Map<TopoDS_Shape>& aMSx = aShapesInOn.Find(aS);
       TopTools_ListOfShape aLSx;
-      TopTools_MapIteratorOfMapOfShape aItMS(aMSx);
+      NCollection_Map<TopoDS_Shape>::Iterator aItMS(aMSx);
 
       for (; aItMS.More(); aItMS.Next()) {
         const TopoDS_Shape& aSx = aItMS.Key();
@@ -1011,10 +1010,10 @@ void GEOMAlgo_GetInPlace::FillImgSimple
 void GEOMAlgo_GetInPlace::FillImgComplex(const TopoDS_Shape     &theShape,
                                          const Standard_Boolean  IsWhere)
 {
-  TopTools_MapOfShape  aMapRemaining;
+  NCollection_Map<TopoDS_Shape>  aMapRemaining;
   TopoDS_Iterator      aIt(theShape);
   TopTools_ListOfShape aLSx;
-  TopTools_MapOfShape  aMSx;
+  NCollection_Map<TopoDS_Shape>  aMSx;
 
   for(; aIt.More(); aIt.Next()) {
     const TopoDS_Shape &aSubS = aIt.Value();
@@ -1044,7 +1043,7 @@ void GEOMAlgo_GetInPlace::FillImgComplex(const TopoDS_Shape     &theShape,
   if (!(IsWhere || aMapRemaining.IsEmpty())) {
     // Find the whole from parts.
     while (!aMapRemaining.IsEmpty()) {
-      TopTools_MapIteratorOfMapOfShape anIter(aMapRemaining);
+      NCollection_Map<TopoDS_Shape>::Iterator anIter(aMapRemaining);
       const TopoDS_Shape &aShape = anIter.Key();
 
       if (myShapesInclusive.IsBound(aShape)) {
@@ -1109,11 +1108,11 @@ void GEOMAlgo_GetInPlace::FillShapesIn(const TopoDS_Shape& aS1,
                                        const TopoDS_Shape& aS2)
 {
   if (myShapesIn.IsBound(aS1)) {
-    TopTools_MapOfShape& aMS=myShapesIn.ChangeFind(aS1);
+    NCollection_Map<TopoDS_Shape>& aMS=myShapesIn.ChangeFind(aS1);
     aMS.Add(aS2);
   }
   else {
-    TopTools_MapOfShape aMS;
+    NCollection_Map<TopoDS_Shape> aMS;
     //
     aMS.Add(aS2);
     myShapesIn.Bind(aS1, aMS);
@@ -1127,11 +1126,11 @@ void GEOMAlgo_GetInPlace::FillShapesOn(const TopoDS_Shape& aS1,
                                        const TopoDS_Shape& aS2)
 {
   if (myShapesOn.IsBound(aS1)) {
-    TopTools_MapOfShape& aMS=myShapesOn.ChangeFind(aS1);
+    NCollection_Map<TopoDS_Shape>& aMS=myShapesOn.ChangeFind(aS1);
     aMS.Add(aS2);
   }
   else {
-    TopTools_MapOfShape aMS;
+    NCollection_Map<TopoDS_Shape> aMS;
     //
     aMS.Add(aS2);
     myShapesOn.Bind(aS1, aMS);
diff --git a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx
index 3c44e5137..86e0c1284 100644
--- a/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_GlueAnalyser.cxx
@@ -266,7 +266,7 @@
   Standard_Integer i, aNbF, aNbSDF, iErr;
   TopoDS_Shape aNewShape;
   TopTools_IndexedMapOfShape aMF;
-  TopTools_ListIteratorOfListOfShape aItS;
+  NCollection_List<TopoDS_Shape>::Iterator aItS;
   GEOMAlgo_PassKeyShape aPKF;
   GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF;
   //
@@ -291,11 +291,11 @@
     }
     //
     if (aMPKLF.Contains(aPKF)) {
-      TopTools_ListOfShape& aLSDF=aMPKLF.ChangeFromKey(aPKF);
+      NCollection_List<TopoDS_Shape>& aLSDF=aMPKLF.ChangeFromKey(aPKF);
       aLSDF.Append(aS);
     }
     else {
-      TopTools_ListOfShape aLSDF;
+      NCollection_List<TopoDS_Shape> aLSDF;
       //
       aLSDF.Append(aS);
       aMPKLF.Add(aPKF, aLSDF);
@@ -313,7 +313,7 @@
   // Images/Origins
   aNbF=aMPKLF.Extent();
   for (i=1; i<=aNbF; ++i) {
-    const TopTools_ListOfShape& aLSDF=aMPKLF(i);
+    const NCollection_List<TopoDS_Shape>& aLSDF=aMPKLF(i);
     aNbSDF=aLSDF.Extent();
     if (!aNbSDF) {
       myErrorStatus=4; // it must not be
@@ -322,7 +322,9 @@
     const TopoDS_Shape& aS1=aLSDF.First();
     aNewShape=aS1;
     //
-    myImages.Bind(aNewShape, aLSDF);
+    TopTools_ListOfShape aConvLSDF;
+    GEOMAlgo_AlgoTools::ConvertNCollectionListToTopToolsListOfShape(aLSDF, aConvLSDF);
+    myImages.Bind(aNewShape, aConvLSDF);
     // origins
     aItS.Initialize(aLSDF);
     for (; aItS.More(); aItS.Next()) {
@@ -397,7 +399,7 @@
     //qt
     //
     if (!aMPKLS.Contains(aPKSx)) {
-      TopTools_ListOfShape aLSx;
+      NCollection_List<TopoDS_Shape> aLSx;
       //
       aLSx.Append(aSx[0]);
       aLSx.Append(aSx[1]);
@@ -416,7 +418,7 @@
   }
   //
   for (i=1; i<=aNbC; ++i) {
-    const TopTools_ListOfShape& aLSx=aMPKLS(i);
+    const NCollection_List<TopoDS_Shape>& aLSx=aMPKLS(i);
     const TopoDS_Shape& aSx1=aLSx.First();
     const TopoDS_Shape& aSx2=aLSx.Last();
     aCS.SetShape1(aSx1);
diff --git a/src/GEOMAlgo/GEOMAlgo_GlueDetector.cxx b/src/GEOMAlgo/GEOMAlgo_GlueDetector.cxx
index 32ab2acef..2c03d3ca5 100644
--- a/src/GEOMAlgo/GEOMAlgo_GlueDetector.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_GlueDetector.cxx
@@ -41,8 +41,6 @@
 #include <TopoDS_Compound.hxx>
 
 #include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
 #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
 #include <TopTools_MapOfShape.hxx>
 #include <TopTools_MapIteratorOfMapOfShape.hxx>
@@ -318,7 +316,7 @@ void GEOMAlgo_GlueDetector::DetectShapes(const TopAbs_ShapeEnum aType)
   Standard_Boolean bDegenerated;
   Standard_Integer i, aNbF, aNbSDF, iErr;
   TopTools_IndexedMapOfShape aMF;
-  TopTools_ListIteratorOfListOfShape aItLS;
+  NCollection_List<TopoDS_Shape>::Iterator aItLS;
   GEOMAlgo_PassKeyShape aPKF;
   GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF;
   //
@@ -344,11 +342,11 @@ void GEOMAlgo_GlueDetector::DetectShapes(const TopAbs_ShapeEnum aType)
     }
     //
     if (aMPKLF.Contains(aPKF)) {
-      TopTools_ListOfShape& aLSDF=aMPKLF.ChangeFromKey(aPKF);
+      NCollection_List<TopoDS_Shape>& aLSDF=aMPKLF.ChangeFromKey(aPKF);
       aLSDF.Append(aS);
     }
     else {
-      TopTools_ListOfShape aLSDF;
+      NCollection_List<TopoDS_Shape> aLSDF;
       //
       aLSDF.Append(aS);
       aMPKLF.Add(aPKF, aLSDF);
@@ -366,7 +364,7 @@ void GEOMAlgo_GlueDetector::DetectShapes(const TopAbs_ShapeEnum aType)
   // Images/Origins
   aNbF=aMPKLF.Extent();
   for (i=1; i<=aNbF; ++i) {
-    const TopTools_ListOfShape& aLSDF=aMPKLF(i);
+    const NCollection_List<TopoDS_Shape>& aLSDF=aMPKLF(i);
     aNbSDF=aLSDF.Extent();
     if (!aNbSDF) {
       myErrorStatus=4; // it must not be
@@ -386,7 +384,9 @@ void GEOMAlgo_GlueDetector::DetectShapes(const TopAbs_ShapeEnum aType)
       }
     }
     //
-    myImages.Bind(aS1, aLSDF);
+    TopTools_ListOfShape aConvLSDF;
+    GEOMAlgo_AlgoTools::ConvertNCollectionListToTopToolsListOfShape(aLSDF, aConvLSDF);
+    myImages.Bind(aS1, aConvLSDF);
     //
     // origins
     aItLS.Initialize(aLSDF);
@@ -407,7 +407,7 @@ void GEOMAlgo_GlueDetector::FacePassKey(const TopoDS_Face& aF,
 {
   Standard_Integer i, aNbE;
   TopoDS_Shape aER;
-  TopTools_ListOfShape aLE;
+  NCollection_List<TopoDS_Shape> aLE;
   TopTools_IndexedMapOfShape aME;
   //
   TopExp::MapShapes(aF, TopAbs_EDGE, aME);
@@ -441,7 +441,7 @@ void GEOMAlgo_GlueDetector::EdgePassKey(const TopoDS_Edge& aE,
   TopAbs_Orientation aOr;
   TopoDS_Shape aVR;
   TopoDS_Iterator aIt;
-  TopTools_ListOfShape aLV;
+  NCollection_List<TopoDS_Shape> aLV;
   //
   aIt.Initialize(aE);
   for (; aIt.More(); aIt.Next()) {
diff --git a/src/GEOMAlgo/GEOMAlgo_GlueDetector.hxx b/src/GEOMAlgo/GEOMAlgo_GlueDetector.hxx
index 0d298f458..4e99a3f55 100644
--- a/src/GEOMAlgo/GEOMAlgo_GlueDetector.hxx
+++ b/src/GEOMAlgo/GEOMAlgo_GlueDetector.hxx
@@ -30,9 +30,8 @@
 #include <Standard_Macro.hxx>
 
 #include <TopAbs_ShapeEnum.hxx>
-
-#include <TopTools_ListOfShape.hxx>
 #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#include <NCollection_List.hxx>
 
 #include <GEOMAlgo_GluerAlgo.hxx>
 #include <GEOMAlgo_Algo.hxx>
diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer.cxx b/src/GEOMAlgo/GEOMAlgo_Gluer.cxx
index 7740b1e9b..75d1434df 100755
--- a/src/GEOMAlgo/GEOMAlgo_Gluer.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_Gluer.cxx
@@ -599,7 +599,7 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
   Standard_Integer i, aNbF, aNbSDF, iErr;
   TopoDS_Shape aNewShape;
   TopTools_IndexedMapOfShape aMF;
-  TopTools_ListIteratorOfListOfShape aItS;
+  NCollection_List<TopoDS_Shape>::Iterator aItS;
   GEOMAlgo_PassKeyShape aPKF;
   GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape aMPKLF;
   //
@@ -623,11 +623,11 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
     }
     //
     if (aMPKLF.Contains(aPKF)) {
-      TopTools_ListOfShape& aLSDF=aMPKLF.ChangeFromKey(aPKF);
+      NCollection_List<TopoDS_Shape>& aLSDF=aMPKLF.ChangeFromKey(aPKF);
       aLSDF.Append(aS);
     }
     else {
-      TopTools_ListOfShape aLSDF;
+      NCollection_List<TopoDS_Shape> aLSDF;
       //
       aLSDF.Append(aS);
       aMPKLF.Add(aPKF, aLSDF);
@@ -646,7 +646,7 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
   //
   aNbF=aMPKLF.Extent();
   for (i=1; i<=aNbF; ++i) {
-    const TopTools_ListOfShape& aLSDF=aMPKLF(i);
+    const NCollection_List<TopoDS_Shape>& aLSDF=aMPKLF(i);
     aNbSDF=aLSDF.Extent();
     if (!aNbSDF) {
       myErrorStatus=4; // it must not be
@@ -682,7 +682,9 @@ void GEOMAlgo_Gluer::MakeShapes(const TopAbs_ShapeEnum aType)
       }
     }
     //
-    myImages.Bind(aNewShape, aLSDF);
+    TopTools_ListOfShape aConvLSDF;
+    GEOMAlgo_AlgoTools::ConvertNCollectionListToTopToolsListOfShape(aLSDF, aConvLSDF);
+    myImages.Bind(aNewShape, aConvLSDF);
     // origins
     aItS.Initialize(aLSDF);
     for (; aItS.More(); aItS.Next()) {
@@ -798,7 +800,7 @@ void GEOMAlgo_Gluer::FacePassKey(const TopoDS_Face& aF,
 				 GEOMAlgo_PassKeyShape& aPK)
 {
   Standard_Integer i, aNbE;
-  TopTools_ListOfShape aLE;
+  NCollection_List<TopoDS_Shape> aLE;
   TopTools_IndexedMapOfShape aME;
   //
   TopExp::MapShapes(aF, TopAbs_EDGE, aME);
diff --git a/src/GEOMAlgo/GEOMAlgo_Gluer2_3.cxx b/src/GEOMAlgo/GEOMAlgo_Gluer2_3.cxx
index 2d6a6e7ec..7197eba62 100644
--- a/src/GEOMAlgo/GEOMAlgo_Gluer2_3.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_Gluer2_3.cxx
@@ -194,7 +194,7 @@ void GEOMAlgo_Gluer2::PerformShapesToWork()
   aNbC=aMC.Extent();
   for (i=1; i<=aNbC; ++i) {
     const TopoDS_Shape& aSkey=aMC.FindKey(i);
-    const TopTools_IndexedMapOfShape& aM=aMC(i);
+    const NCollection_IndexedMap<TopoDS_Shape>& aM=aMC(i);
     aLSX.Clear();
     aNb=aM.Extent();
     for (j=1; j<=aNb; ++j) {
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx
index 736a7cc13..5325dfda5 100644
--- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx
+++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape.hxx
@@ -26,15 +26,15 @@
 #define GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape_HeaderFile
 
 #include <GEOMAlgo_PassKeyShape.hxx>
-#include <TopTools_ListOfShape.hxx>
 #include <GEOMAlgo_PassKeyShapeMapHasher.hxx>
 
 
 #define _NCollection_MapHasher
 #include <NCollection_IndexedDataMap.hxx>
+#include <NCollection_List.hxx>
 
 
-typedef NCollection_IndexedDataMap<GEOMAlgo_PassKeyShape, TopTools_ListOfShape, GEOMAlgo_PassKeyShapeMapHasher> GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape;
+typedef NCollection_IndexedDataMap<GEOMAlgo_PassKeyShape, NCollection_List<TopoDS_Shape>, GEOMAlgo_PassKeyShapeMapHasher> GEOMAlgo_IndexedDataMapOfPassKeyShapeListOfShape;
 
 #undef _NCollection_MapHasher
 
diff --git a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape.hxx
index b5edf4cc0..96df816a3 100755
--- a/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape.hxx
+++ b/src/GEOMAlgo/GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape.hxx
@@ -32,13 +32,14 @@
 
 #include <TopoDS_Shape.hxx>
 #include <TopTools_ShapeMapHasher.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
 
 #define _NCollection_MapHasher
 #include <NCollection_IndexedDataMap.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 
-typedef NCollection_IndexedDataMap <TopoDS_Shape, TopTools_IndexedMapOfShape, TopTools_ShapeMapHasher> GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape;
+typedef NCollection_IndexedDataMap <TopoDS_Shape, NCollection_IndexedMap<TopoDS_Shape>,
+		                            TopTools_ShapeMapHasher> GEOMAlgo_IndexedDataMapOfShapeIndexedMapOfShape;
 
 #undef _NCollection_MapHasher
 
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKey.hxx b/src/GEOMAlgo/GEOMAlgo_PassKey.hxx
index 80c84f796..6900e06ce 100644
--- a/src/GEOMAlgo/GEOMAlgo_PassKey.hxx
+++ b/src/GEOMAlgo/GEOMAlgo_PassKey.hxx
@@ -34,7 +34,7 @@
 #include <Standard_Boolean.hxx>
 
 #include <TColStd_ListOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 //=======================================================================
 //class : GEOMAlgo_PassKey
@@ -100,6 +100,6 @@ class GEOMAlgo_PassKey  {
  protected:
   Standard_Integer myNbIds;
   Standard_Integer mySum;
-  TColStd_IndexedMapOfInteger myMap;
+  NCollection_IndexedMap<Standard_Integer> myMap;
 };
 #endif
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx
index 3a3b9c588..d055051a9 100755
--- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.cxx
@@ -27,7 +27,6 @@
 //
 #include <GEOMAlgo_PassKeyShape.hxx>
 
-#include <TopTools_ListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
 
 
@@ -104,7 +103,7 @@ static
   void GEOMAlgo_PassKeyShape::SetShapes(const TopoDS_Shape& aS1,
                                         const TopoDS_Shape& aS2)
 {
-  TopTools_ListOfShape aLS;
+  NCollection_List<TopoDS_Shape> aLS;
   //
   aLS.Append(aS1);
   aLS.Append(aS2);
@@ -118,7 +117,7 @@ static
                                         const TopoDS_Shape& aS2,
                                         const TopoDS_Shape& aS3)
 {
-  TopTools_ListOfShape aLS;
+  NCollection_List<TopoDS_Shape> aLS;
   //
   aLS.Append(aS1);
   aLS.Append(aS2);
@@ -134,7 +133,7 @@ static
                                         const TopoDS_Shape& aS3,
                                         const TopoDS_Shape& aS4)
 {
-  TopTools_ListOfShape aLS;
+  NCollection_List<TopoDS_Shape> aLS;
   //
   aLS.Append(aS1);
   aLS.Append(aS2);
@@ -146,10 +145,10 @@ static
 //function :SetShapes
 //purpose  :
 //=======================================================================
-  void GEOMAlgo_PassKeyShape::SetShapes(const TopTools_ListOfShape& aLS)
+  void GEOMAlgo_PassKeyShape::SetShapes(const NCollection_List<TopoDS_Shape>& aLS)
 {
   Standard_Integer i, aId, aIdN;
-  TopTools_ListIteratorOfListOfShape aIt;
+  NCollection_List<TopoDS_Shape>::Iterator aIt;
   //
   Clear();
   aIt.Initialize(aLS);
diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx
index 2c6a3a2f0..2a71105e2 100644
--- a/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx
+++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShape.hxx
@@ -35,7 +35,7 @@
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <Standard_Boolean.hxx>
 #include <TopoDS_Shape.hxx>
-#include <TopTools_ListOfShape.hxx>
+#include <NCollection_List.hxx>
 
 
 //=======================================================================
@@ -79,7 +79,7 @@ class GEOMAlgo_PassKeyShape  {
                    const TopoDS_Shape& aS4) ;
 
   Standard_EXPORT
-    void SetShapes(const TopTools_ListOfShape& aLS) ;
+    void SetShapes(const NCollection_List<TopoDS_Shape>& aLS) ;
 
   Standard_EXPORT
     void Clear() ;
diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller_1.cxx b/src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller_1.cxx
index 68fa630d9..9306bdb82 100644
--- a/src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller_1.cxx
+++ b/src/GEOMAlgo/GEOMAlgo_ShapeInfoFiller_1.cxx
@@ -21,7 +21,7 @@
 
 #include <Precision.hxx>
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 #include <gp_Lin.hxx>
 #include <gp_XYZ.hxx>
@@ -188,7 +188,7 @@ void GEOMAlgo_ShapeInfoFiller::FillDetails(const TopoDS_Solid& aSd)
   gp_Pnt aPi, aPc;
   gp_Dir aDir[3];
   gp_XYZ aXYZc;
-  TColStd_IndexedMapOfInteger aMp;
+  NCollection_IndexedMap<Standard_Integer> aMp;
   TopTools_IndexedMapOfShape aMV, aMFi;
   //
   // barycenter aPc
diff --git a/src/GEOMBase/GEOMBase_Helper.cxx b/src/GEOMBase/GEOMBase_Helper.cxx
index e7b02e6b4..cea7b09e0 100755
--- a/src/GEOMBase/GEOMBase_Helper.cxx
+++ b/src/GEOMBase/GEOMBase_Helper.cxx
@@ -54,7 +54,7 @@
 
 #include <TColStd_MapOfInteger.hxx>
 #include <TCollection_AsciiString.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 //To disable automatic genericobj management, the following line should be commented.
 //Otherwise, it should be uncommented. Refer to KERNEL_SRC/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx
@@ -1274,7 +1274,7 @@ QList<GEOM::GeomObjPtr> GEOMBase_Helper::getSelected( const QList<TopAbs_ShapeEn
         Handle(SALOME_InteractiveObject) IO = it.Value();
         GEOM::GeomObjPtr object = GEOMBase::ConvertIOinGEOMObject( IO );
         if ( object ) {
-          TColStd_IndexedMapOfInteger subShapes;
+          NCollection_IndexedMap<Standard_Integer> subShapes;
           selMgr->GetIndexes( IO, subShapes );
           int nbSubShapes = subShapes.Extent();
           if ( nbSubShapes == 0 ) {
diff --git a/src/GEOMGUI/GEOMGUI_OCCSelector.cxx b/src/GEOMGUI/GEOMGUI_OCCSelector.cxx
index c9a1698c6..a6c518584 100644
--- a/src/GEOMGUI/GEOMGUI_OCCSelector.cxx
+++ b/src/GEOMGUI/GEOMGUI_OCCSelector.cxx
@@ -46,7 +46,7 @@
 #include <TopExp.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <NCollection_DataMap.hxx>
 
 
@@ -204,7 +204,7 @@ void GEOMGUI_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
   Handle(AIS_InteractiveContext) ic = vw->getAISContext();
 
   // "entry - list_of_int" map for LOCAL selection
-  NCollection_DataMap<TCollection_AsciiString, TColStd_IndexedMapOfInteger> indexesMap;
+  NCollection_DataMap<TCollection_AsciiString, NCollection_IndexedMap<Standard_Integer> > indexesMap;
 
   QMap<QString,int> globalSelMap; // only Key=entry from this map is used.  value(int) is NOT used at all.
   SelectMgr_IndexedMapOfOwner ownersmap; // map of owners to be selected
@@ -222,13 +222,13 @@ void GEOMGUI_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
       QString entry = subOwner->entry();
       if ( indexesMap.IsBound( TCollection_AsciiString(entry.toLatin1().data())))
       {
-        TColStd_IndexedMapOfInteger& subIndexes = indexesMap.ChangeFind(entry.toLatin1().data());
+        NCollection_IndexedMap<Standard_Integer>& subIndexes = indexesMap.ChangeFind(entry.toLatin1().data());
         subIndexes.Add( subOwner->index() );
         //indexesMap.replace( entry, subIndexes );
       }
       else
       {
-        TColStd_IndexedMapOfInteger subIndexes;
+        NCollection_IndexedMap<Standard_Integer> subIndexes;
         subIndexes.Add( subOwner->index() );
         indexesMap.Bind(entry.toLatin1().data(), subIndexes);
       }
@@ -304,7 +304,7 @@ void GEOMGUI_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
         {
           if (isLocal)
           {
-            const TColStd_IndexedMapOfInteger& subIndexes =
+            const NCollection_IndexedMap<Standard_Integer>& subIndexes =
               indexesMap.ChangeFind(entryStr.toLatin1().data());
 
             const TopoDS_Shape& aSubShape = anOwner->Shape();
@@ -364,7 +364,7 @@ void GEOMGUI_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
         SalomeApp_Study* appStudy =
           dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
         QString anEntry = appStudy->referencedToEntry( owner->entry() );
-        if (globalSelMap[anEntry] == 1) mySelectedExternals.append(*itr2);
+        if (globalSelMap[anEntry] == 1) mySelectedExternals.append(*itr2)	;
       }
     }
   }
diff --git a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx b/src/GenerationGUI/GenerationGUI_PipeDlg.cxx
index edcbec331..8e264045e 100644
--- a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx
+++ b/src/GenerationGUI/GenerationGUI_PipeDlg.cxx
@@ -38,7 +38,6 @@
 #include <TopoDS_Shape.hxx>
 #include <TopoDS.hxx>
 #include <TopExp.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TColStd_IndexedMapOfInteger.hxx>
 #include <TColStd_MapOfInteger.hxx>
diff --git a/src/GroupGUI/GroupGUI_GroupDlg.cxx b/src/GroupGUI/GroupGUI_GroupDlg.cxx
index fa50a5357..15b936453 100644
--- a/src/GroupGUI/GroupGUI_GroupDlg.cxx
+++ b/src/GroupGUI/GroupGUI_GroupDlg.cxx
@@ -62,7 +62,6 @@
 #include <TopExp.hxx>
 #include <TopExp_Explorer.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
 #include <TColStd_MapOfInteger.hxx>
 #include <TColStd_DataMapIteratorOfDataMapOfIntegerInteger.hxx>
 
@@ -567,7 +566,7 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
     myIdList->blockSignals(true);
     myIdList->clearSelection();
 
-    TColStd_IndexedMapOfInteger aMapIndex;
+    NCollection_IndexedMap<Standard_Integer> aMapIndex;
     int nbSel = getSelectedSubshapes(aMapIndex);
 
     if (nbSel) {
@@ -763,7 +762,7 @@ void GroupGUI_GroupDlg::showOnlySelected()
 // function : getSelectedSubshapes
 // purpose  :
 //=================================================================================
-int GroupGUI_GroupDlg::getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMapIndex)
+int GroupGUI_GroupDlg::getSelectedSubshapes (NCollection_IndexedMap<Standard_Integer>& theMapIndex)
 {
   theMapIndex.Clear();
 
@@ -842,7 +841,7 @@ int GroupGUI_GroupDlg::getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMap
 //=================================================================================
 void GroupGUI_GroupDlg::add()
 {
-  TColStd_IndexedMapOfInteger aMapIndex;
+  NCollection_IndexedMap<Standard_Integer> aMapIndex;
   int nbSel = getSelectedSubshapes(aMapIndex);
 
   TColStd_MapOfInteger aMap;
diff --git a/src/GroupGUI/GroupGUI_GroupDlg.h b/src/GroupGUI/GroupGUI_GroupDlg.h
index fe43e2221..174e8d20f 100644
--- a/src/GroupGUI/GroupGUI_GroupDlg.h
+++ b/src/GroupGUI/GroupGUI_GroupDlg.h
@@ -31,7 +31,7 @@
 
 #include <TopAbs_ShapeEnum.hxx>
 #include <TColStd_DataMapOfIntegerInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 class QGroupBox;
 class QLineEdit;
@@ -90,7 +90,7 @@ private:
   void                                highlightSubShapes();
   void                                onGetInPlace();
   void                                setInPlaceObj (GEOM::GEOM_Object_var, const bool isVisible=1);
-  int                                 getSelectedSubshapes (TColStd_IndexedMapOfInteger& theMapIndex);
+  int                                 getSelectedSubshapes (NCollection_IndexedMap<Standard_Integer>& theMapIndex);
 
 private:
   Mode                                myMode;
diff --git a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx
index 42b9e3abd..b84a39b2b 100644
--- a/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx
+++ b/src/MeasureGUI/MeasureGUI_CheckShapeDlg.cxx
@@ -38,7 +38,7 @@
 #include <SalomeApp_Application.h>
 #include <LightApp_SelectionMgr.h>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <TColStd_MapOfInteger.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TopExp.hxx>
@@ -595,7 +595,7 @@ bool MeasureGUI_CheckShapeDlg::execute( ObjectList& objects )
   const bool isPublishAllErrors = (aNbErrsSelected < 1);
   const bool isPublishAllShapes =
     (aNbErrsSelected != 1 || myGrp->ListBox2->selectedItems().empty());
-  TColStd_IndexedMapOfInteger aMapIndex;
+  NCollection_IndexedMap<Standard_Integer> aMapIndex;
   const int aNbErrs = aErrs.length();
   int i;
 
diff --git a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx
index 457714ee8..e0a77c0db 100644
--- a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx
+++ b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx
@@ -37,7 +37,7 @@
 #include <TopoDS_Shape.hxx>
 #include <TopoDS.hxx>
 #include <TopExp.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
 #include <GEOMImpl_Types.hxx>
@@ -184,7 +184,7 @@ void MeasureGUI_NormaleDlg::SelectionIntoArgument()
     TopoDS_Shape aShape;
     if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull())
     {
-      TColStd_IndexedMapOfInteger aMap;
+      NCollection_IndexedMap<Standard_Integer> aMap;
       aSelMgr->GetIndexes(aSelList.First(), aMap);
       if (aMap.Extent() == 1) // Local Selection
       {
@@ -217,7 +217,7 @@ void MeasureGUI_NormaleDlg::SelectionIntoArgument()
     TopoDS_Shape aShape;
     if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull())
     {
-      TColStd_IndexedMapOfInteger aMap;
+      NCollection_IndexedMap<Standard_Integer> aMap;
       aSelMgr->GetIndexes(aSelList.First(), aMap);
       if (aMap.Extent() == 1) // Local Selection
       {
diff --git a/src/MeasureGUI/MeasureGUI_PointDlg.cxx b/src/MeasureGUI/MeasureGUI_PointDlg.cxx
index e21d5252f..8956ecd7c 100644
--- a/src/MeasureGUI/MeasureGUI_PointDlg.cxx
+++ b/src/MeasureGUI/MeasureGUI_PointDlg.cxx
@@ -43,7 +43,7 @@
 #include <BRep_Tool.hxx>
 #include <TopExp.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <gp_Pnt.hxx>
 
 //=================================================================================
@@ -143,7 +143,7 @@ void MeasureGUI_PointDlg::SelectionIntoArgument()
 
     myObj = aSelectedObject;
 
-    TColStd_IndexedMapOfInteger anIndexes;
+    NCollection_IndexedMap<Standard_Integer> anIndexes;
     aSelMgr->GetIndexes(aSelList.First(), anIndexes);
 
     TopoDS_Shape aShape;
diff --git a/src/OBJECT/GEOM_AISShape.cxx b/src/OBJECT/GEOM_AISShape.cxx
index e790b8072..a32d397c7 100644
--- a/src/OBJECT/GEOM_AISShape.cxx
+++ b/src/OBJECT/GEOM_AISShape.cxx
@@ -63,7 +63,7 @@
 #include <StdPrs_ShadedShape.hxx>
 #include <StdPrs_WFDeflectionShape.hxx>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 #include <TColStd_ListIteratorOfListOfInteger.hxx>
 #include <TColStd_ListOfInteger.hxx>
 #include <TopExp.hxx>
@@ -120,7 +120,7 @@ static void getEntityOwners( const Handle(AIS_InteractiveObject)& theObj,
   }
 }
 
-static void indicesToOwners( const TColStd_IndexedMapOfInteger& aIndexMap,
+static void indicesToOwners( const NCollection_IndexedMap<Standard_Integer>& aIndexMap,
                              const TopoDS_Shape& aMainShape,
                              const SelectMgr_IndexedMapOfOwner& anAllMap, 
                              SelectMgr_IndexedMapOfOwner& aToHiliteMap )
@@ -357,7 +357,7 @@ void GEOM_AISShape::SetEdgesInShadingColor(const Quantity_Color &aCol)
   myEdgesInShadingColor = aCol;
 }
 
-void GEOM_AISShape::highlightSubShapes(const TColStd_IndexedMapOfInteger& aIndexMap, 
+void GEOM_AISShape::highlightSubShapes(const NCollection_IndexedMap<Standard_Integer>& aIndexMap,
                                        const Standard_Boolean aHighlight )
 {
   Handle(AIS_InteractiveObject) anObj = this;
@@ -585,7 +585,7 @@ void GEOM_AISShape::drawField( const Handle(Prs3d_Presentation)& thePrs,
   TopTools_IndexedMapOfShape aShapeMap;
   TopExp::MapShapes( myshape, aShapeMap );
 
-  TColStd_IndexedMapOfInteger anIndexMap;
+  NCollection_IndexedMap<Standard_Integer> anIndexMap;
 
   TopExp_Explorer anExp;
   for( anExp.Init( myshape, aShapeType ); anExp.More(); anExp.Next() )
diff --git a/src/OBJECT/GEOM_AISShape.hxx b/src/OBJECT/GEOM_AISShape.hxx
index b2881d2c6..84c518025 100644
--- a/src/OBJECT/GEOM_AISShape.hxx
+++ b/src/OBJECT/GEOM_AISShape.hxx
@@ -118,7 +118,7 @@ public:
         Standard_Boolean isTopLevel();
         void setTopLevel(Standard_Boolean);
         Handle_SALOME_InteractiveObject getIO() ;
-        void highlightSubShapes(const TColStd_IndexedMapOfInteger& aIndexMap, const Standard_Boolean aHighlight );
+        void highlightSubShapes(const NCollection_IndexedMap<Standard_Integer>& aIndexMap, const Standard_Boolean aHighlight );
         ~GEOM_AISShape();
 
         void SetShadingColor(const Quantity_Color &aCol);
diff --git a/src/OBJECT/GEOM_TopWireframeShape.cxx b/src/OBJECT/GEOM_TopWireframeShape.cxx
index 0cec60e0d..611966801 100755
--- a/src/OBJECT/GEOM_TopWireframeShape.cxx
+++ b/src/OBJECT/GEOM_TopWireframeShape.cxx
@@ -80,7 +80,7 @@ Standard_CString GEOM_TopWireframeShape::getName(){
 }
 
 
-void GEOM_TopWireframeShape::highlightSubShapes(const TColStd_IndexedMapOfInteger& /*aIndexMap*/, 
+void GEOM_TopWireframeShape::highlightSubShapes(const NCollection_IndexedMap<Standard_Integer>& /*aIndexMap*/,
                                        const Standard_Boolean /*aHighlight*/ )
 {
 }
diff --git a/src/OBJECT/GEOM_TopWireframeShape.hxx b/src/OBJECT/GEOM_TopWireframeShape.hxx
index 97d7bf9c1..cc17739de 100755
--- a/src/OBJECT/GEOM_TopWireframeShape.hxx
+++ b/src/OBJECT/GEOM_TopWireframeShape.hxx
@@ -75,7 +75,7 @@ public:
     virtual  void setTopLevel(Standard_Boolean);
     virtual  Standard_CString getName();
     virtual  void setName(const Standard_CString aName);
-    virtual  void highlightSubShapes(const TColStd_IndexedMapOfInteger& aIndexMap, const Standard_Boolean aHighlight );
+    virtual  void highlightSubShapes(const NCollection_IndexedMap<Standard_Integer>& aIndexMap, const Standard_Boolean aHighlight );
     ~GEOM_TopWireframeShape();
 
     // Type management
diff --git a/src/OCC2VTK/OCC2VTK_internal.h b/src/OCC2VTK/OCC2VTK_internal.h
index 32e2869e2..b826e6060 100644
--- a/src/OCC2VTK/OCC2VTK_internal.h
+++ b/src/OCC2VTK/OCC2VTK_internal.h
@@ -1,18 +1,15 @@
 #ifndef OCC2VTK_INTERNAL_H
 #define OCC2VTK_INTERNAL_H
 
-#include <NCollection_BaseCollection.hxx>
 #include <NCollection_BaseList.hxx>
 #include <NCollection_TListNode.hxx>
 #include <NCollection_TListIterator.hxx>
-
 #include <TopoDS_Vertex.hxx>
 #include <TopoDS_Edge.hxx> 
 #include <TopoDS_Face.hxx> 
 
-template <class TheItemType> class GEOM_Set
-  : public NCollection_BaseCollection<TheItemType>,
-    public NCollection_BaseList
+template <class TheItemType>
+class GEOM_Set : public NCollection_BaseList
 {
 public:
   typedef NCollection_TListNode<TheItemType> SetNode;
@@ -21,12 +18,10 @@ public:
 public:
   //! Constructor
   GEOM_Set(const Handle(NCollection_BaseAllocator)& theAllocator=0L) :
-    NCollection_BaseCollection<TheItemType>(theAllocator),
     NCollection_BaseList() {}
 
   //! Copy constructor
   GEOM_Set (const GEOM_Set& theOther) :
-    NCollection_BaseCollection<TheItemType>(theOther.myAllocator),
     NCollection_BaseList()
   { *this = theOther; }
 
@@ -35,18 +30,19 @@ public:
   { return Extent(); }
 
   //! Replace this list by the items of theOther collection
-  virtual void Assign (const NCollection_BaseCollection<TheItemType>& theOther)
+  GEOM_Set& Assign (const GEOM_Set& theOther)
   {
     if (this == &theOther) 
-      return;
-    Clear();
-    TYPENAME NCollection_BaseCollection<TheItemType>::Iterator& anIter = 
-      theOther.CreateIterator();
+      return *this;
+
+    Clear( theOther.myAllocator );
+    Iterator anIter( theOther );
     for (; anIter.More(); anIter.Next())
     {
       SetNode* pNew = new (this->myAllocator) SetNode(anIter.Value());
       PAppend (pNew);
     }
+    return *this;
   }
 
   //! Replace this list by the items of theOther Set
@@ -67,7 +63,7 @@ public:
 
   //! Clear this set
   void Clear (void)
-  { PClear (SetNode::delNode, this->myAllocator); }
+  { PClear ( SetNode::delNode ); }
 
   //! Add item
   Standard_Boolean Add (const TheItemType& theItem)
@@ -195,12 +191,6 @@ public:
   ~GEOM_Set (void)
   { Clear(); }
 
-private:
-  //! Creates Iterator for use on BaseCollection
-  virtual TYPENAME NCollection_BaseCollection<TheItemType>::Iterator& 
-    CreateIterator(void) const
-  { return *(new (this->IterAllocator()) Iterator(*this)); }
-
 };
 
 typedef GEOM_Set<TopoDS_Vertex> TVertexSet; 
diff --git a/src/OperationGUI/OperationGUI_ChamferDlg.cxx b/src/OperationGUI/OperationGUI_ChamferDlg.cxx
index 88f8f7d2e..1a6a2e0d7 100644
--- a/src/OperationGUI/OperationGUI_ChamferDlg.cxx
+++ b/src/OperationGUI/OperationGUI_ChamferDlg.cxx
@@ -439,7 +439,7 @@ void OperationGUI_ChamferDlg::SelectionIntoArgument()
         GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
 
       if ( !anObj->_is_nil() ) {
-         TColStd_IndexedMapOfInteger anIndexes;
+         NCollection_IndexedMap<Standard_Integer> anIndexes;
          aSelMgr->GetIndexes(aSelList.First(), anIndexes);
 
          if (anIndexes.Extent() == 1) {
@@ -461,7 +461,7 @@ void OperationGUI_ChamferDlg::SelectionIntoArgument()
         GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
 
       if ( !anObj->_is_nil() ) {
-        TColStd_IndexedMapOfInteger anIndexes;
+        NCollection_IndexedMap<Standard_Integer> anIndexes;
         aSelMgr->GetIndexes(aSelList.First(), anIndexes);
 
         if (anIndexes.Extent() > 0) {
diff --git a/src/OperationGUI/OperationGUI_ChamferDlg.h b/src/OperationGUI/OperationGUI_ChamferDlg.h
index 5e0712290..a601cdbeb 100644
--- a/src/OperationGUI/OperationGUI_ChamferDlg.h
+++ b/src/OperationGUI/OperationGUI_ChamferDlg.h
@@ -29,7 +29,7 @@
 
 #include <GEOMBase_Skeleton.h>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 #include <QMap>
 
@@ -93,11 +93,11 @@ private:
   
   GEOM::GEOM_Object_var               myShape; 
   QMap< int, int >                    myFace;  // indexes of faces from second tab ( Face1,2 )
-  TColStd_IndexedMapOfInteger         myFaces; // indexes of faces from first tab ( Faces )
-  TColStd_IndexedMapOfInteger         myEdges; // indexes of edges from fourth tab (Edges)
+  NCollection_IndexedMap<Standard_Integer>   myFaces; // indexes of faces from first tab ( Faces )
+  NCollection_IndexedMap<Standard_Integer>   myEdges; // indexes of edges from fourth tab (Edges)
 
   // to initialize the first selection field with a selected object on the dialog creation
-  bool                               myInitial;
+  bool                                myInitial;
   
   QGroupBox*                          myGrp1;
   QGroupBox*                          myGrp2;
diff --git a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx
index 5952cd4ce..c5abb499c 100644
--- a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx
+++ b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.cxx
@@ -38,7 +38,6 @@
 
 // OCCT Includes
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
 
 #include <GEOMImpl_Types.hxx>
 
@@ -205,7 +204,7 @@ void OperationGUI_Fillet1d2dDlg::SelectionIntoArgument()
         QString aName = GEOMBase::GetName( anObj );
         TopoDS_Shape aShape;
         if ( GEOMBase::GetShape( anObj, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
-          TColStd_IndexedMapOfInteger aMap;
+          NCollection_IndexedMap<Standard_Integer> aMap;
           aSelMgr->GetIndexes(aSelList.First(), aMap);
           if ( aMap.Extent() == 1 ) { // Local Selection
             int anIndex = aMap( 1 );
@@ -243,7 +242,7 @@ void OperationGUI_Fillet1d2dDlg::SelectionIntoArgument()
         GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
 
       if ( !anObj->_is_nil() ) {
-        TColStd_IndexedMapOfInteger anIndexes;
+        NCollection_IndexedMap<Standard_Integer> anIndexes;
         aSelMgr->GetIndexes(aSelList.First(), anIndexes);
 
         if (anIndexes.Extent() > 0) {
diff --git a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h
index f203671d5..416805e8b 100644
--- a/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h
+++ b/src/OperationGUI/OperationGUI_Fillet1d2dDlg.h
@@ -26,7 +26,7 @@
 
 #include <GEOMBase_Skeleton.h>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 class DlgRef_2Sel1Spin2Check;
 
@@ -64,11 +64,11 @@ private:
   double                              getRadius() const;
 
 private:
-  bool                                myIs1D;
-  GEOM::GEOM_Object_var               myShape;
-  TColStd_IndexedMapOfInteger         myVertexes;
+  bool                                      myIs1D;
+  GEOM::GEOM_Object_var                     myShape;
+  NCollection_IndexedMap<Standard_Integer>  myVertexes;
 
-  DlgRef_2Sel1Spin2Check*             GroupVertexes;
+  DlgRef_2Sel1Spin2Check*                   GroupVertexes;
 };
 
 #endif // OPERATIONGUI_Fillet1d2dDLG_H
diff --git a/src/OperationGUI/OperationGUI_FilletDlg.cxx b/src/OperationGUI/OperationGUI_FilletDlg.cxx
index 13de9405b..d0c03d708 100644
--- a/src/OperationGUI/OperationGUI_FilletDlg.cxx
+++ b/src/OperationGUI/OperationGUI_FilletDlg.cxx
@@ -41,7 +41,6 @@
 
 // OCCT Includes
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
 
 #include <GEOMImpl_Types.hxx>
 
@@ -371,7 +370,7 @@ void OperationGUI_FilletDlg::SelectionIntoArgument()
         GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
 
       if ( !anObj->_is_nil() ) {
-        TColStd_IndexedMapOfInteger anIndexes;
+        NCollection_IndexedMap<Standard_Integer> anIndexes;
         aSelMgr->GetIndexes(aSelList.First(), anIndexes);
 
         if (anIndexes.Extent() > 0) {
diff --git a/src/OperationGUI/OperationGUI_FilletDlg.h b/src/OperationGUI/OperationGUI_FilletDlg.h
index edaaa40f7..a76a04ab4 100644
--- a/src/OperationGUI/OperationGUI_FilletDlg.h
+++ b/src/OperationGUI/OperationGUI_FilletDlg.h
@@ -29,7 +29,7 @@
 
 #include <GEOMBase_Skeleton.h>
 
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 class DlgRef_1Sel1Spin;
 class DlgRef_2Sel3Spin2Rb;
@@ -74,8 +74,8 @@ private:
   int                                 myConstructorId;
   
   GEOM::GEOM_Object_var               myShape;
-  TColStd_IndexedMapOfInteger         myEdges;
-  TColStd_IndexedMapOfInteger         myFaces;
+  NCollection_IndexedMap<Standard_Integer>  myEdges;
+  NCollection_IndexedMap<Standard_Integer>  myFaces;
 
   // to initialize the first selection field with a selected object on the dialog creation
   bool                               myInitial;
diff --git a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx b/src/RepairGUI/RepairGUI_CloseContourDlg.cxx
index f57ad4868..f535086bf 100644
--- a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx
+++ b/src/RepairGUI/RepairGUI_CloseContourDlg.cxx
@@ -38,7 +38,7 @@
 // OCCT Includes
 #include <TopAbs.hxx>
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 #include <GEOMImpl_Types.hxx>
 
@@ -204,7 +204,7 @@ void RepairGUI_CloseContourDlg::SelectionIntoArgument()
         myObject = GEOM::GEOM_Object::_nil();
     }
     else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
-      TColStd_IndexedMapOfInteger aMap;
+      NCollection_IndexedMap<Standard_Integer> aMap;
       aSelMgr->GetIndexes(anIO, aMap);
       const int n = aMap.Extent();
       myWiresInd->length(n);
diff --git a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx b/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx
index 19e10b070..efcd36e6b 100644
--- a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx
+++ b/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx
@@ -47,7 +47,7 @@
 #include <BRep_Tool.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <BRepBuilderAPI_MakeVertex.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 //=================================================================================
 // class    : RepairGUI_DivideEdgeDlg()
@@ -256,7 +256,7 @@ void RepairGUI_DivideEdgeDlg::SelectionIntoArgument()
         {
           GEOM::short_array anIndexes;
 
-          TColStd_IndexedMapOfInteger aMap;
+          NCollection_IndexedMap<Standard_Integer> aMap;
           SalomeApp_Application* anApp =
             (SalomeApp_Application*)(SUIT_Session::session()->activeApplication());
           anApp->selectionMgr()->GetIndexes( anIO, aMap );
diff --git a/src/RepairGUI/RepairGUI_FuseEdgesDlg.cxx b/src/RepairGUI/RepairGUI_FuseEdgesDlg.cxx
index ba795c130..1bd62ee8b 100644
--- a/src/RepairGUI/RepairGUI_FuseEdgesDlg.cxx
+++ b/src/RepairGUI/RepairGUI_FuseEdgesDlg.cxx
@@ -34,7 +34,7 @@
 
 // OCCT Includes
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 #include <GEOMImpl_Types.hxx>
 
@@ -176,7 +176,7 @@ void RepairGUI_FuseEdgesDlg::SelectionIntoArgument()
         QString aName = GEOMBase::GetName(anObj);
         TopoDS_Shape aShape;
         if (GEOMBase::GetShape(anObj, aShape, TopAbs_SHAPE) && !aShape.IsNull()) {
-          TColStd_IndexedMapOfInteger aMap;
+          NCollection_IndexedMap<Standard_Integer> aMap;
           aSelMgr->GetIndexes(aSelList.First(), aMap);
           if (aMap.Extent() == 1) { // Local Selection
             int anIndex = aMap(1);
diff --git a/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx
index 6206da990..27d824bca 100644
--- a/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx
+++ b/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx
@@ -39,7 +39,7 @@
 // OCCT Includes
 #include <TopAbs.hxx>
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 #include <GEOMImpl_Types.hxx>
 
@@ -205,7 +205,7 @@ void RepairGUI_RemoveHolesDlg::SelectionIntoArgument()
     }
     else if (myEditCurrentArgument == GroupPoints->LineEdit2 &&
              !GroupPoints->CheckButton1->isChecked()) {
-      TColStd_IndexedMapOfInteger aMap;
+      NCollection_IndexedMap<Standard_Integer> aMap;
       aSelMgr->GetIndexes(anIO, aMap);
       const int n = aMap.Extent();
       myWiresInd->length(n);
diff --git a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx
index 927656c57..1dbfd0476 100644
--- a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx
+++ b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx
@@ -38,7 +38,7 @@
 // OCCT Includes
 #include <TopAbs.hxx>
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 #include <GEOMImpl_Types.hxx>
 
@@ -192,7 +192,7 @@ void RepairGUI_RemoveIntWiresDlg::SelectionIntoArgument()
     }
     else if (myEditCurrentArgument == GroupPoints->LineEdit2 &&
              !GroupPoints->CheckButton1->isChecked()) {
-      TColStd_IndexedMapOfInteger aMap;
+      NCollection_IndexedMap<Standard_Integer> aMap;
       aSelMgr->GetIndexes(anIO, aMap);
       const int n = aMap.Extent();
       myWiresInd->length(n);
diff --git a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx b/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx
index 5358f2565..6f3058f12 100644
--- a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx
+++ b/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx
@@ -41,7 +41,7 @@
 #include <TopExp_Explorer.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 #include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
+#include <NCollection_IndexedMap.hxx>
 
 #include <GEOMImpl_Types.hxx>
 
@@ -199,7 +199,7 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument()
     }
   }
   else if (myEditCurrentArgument == GroupArgs->LineEdit2) {
-    TColStd_IndexedMapOfInteger aMap;
+    NCollection_IndexedMap<Standard_Integer> aMap;
 
     if (aSelList.Extent() == 1) {
       Handle(SALOME_InteractiveObject) anIO = aSelList.First();