+class TopoDS_Vertex;
+class TopoDS_Wire;
+class gp_XYZ;
+
+typedef std::map< SMESH_subMesh*, std::vector<int> > MapShapeNbElems;
+typedef std::map< SMESH_subMesh*, std::vector<int> >::iterator MapShapeNbElemsItr;
+
+// ==================================================================================
+/*!
+ * \brief Root of all algorithms
+ *
+ * Methods of the class are grouped into several parts:
+ * - main lifecycle methods, like Compute()
+ * - methods describing features of the algorithm, like NeedShape()
+ * - methods related to dependencies between sub-meshes imposed by the algorith
+ * - static utilities, like EdgeLength()
+ */
+// ==================================================================================
+
+class SMESH_EXPORT SMESH_Algo : public SMESH_Hypothesis