+ virtual int size(const std::string& theGroupID) = 0;
+
+ //! Returns the feature that is currently edited in this document, normally
+ //! this is the latest created feature
+ //! \param theVisible use visible features only: flag is true for Object Browser functionality
+ //! \returns null if next created feature must be the first
+ virtual std::shared_ptr<ModelAPI_Feature> currentFeature(const bool theVisible) = 0;
+
+ //! Sets the current feature: all features below will be disabled, new features
+ //! will be appended after this one.
+ //! \param theCurrent the selected feature as current: blow it everythin become disabled
+ //! \param theVisible use visible features only: flag is true for Object Browser functionality
+ virtual void setCurrentFeature(std::shared_ptr<ModelAPI_Feature> theCurrent,
+ const bool theVisible) = 0;
+ //! Makes the current feature one feature upper
+ virtual void setCurrentFeatureUp() = 0;
+
+ //! Returns the number of all features: in the history or not
+ virtual int numInternalFeatures() = 0;
+ //! Returns the feature by zero-based index: features in the history or not
+ virtual std::shared_ptr<ModelAPI_Feature> internalFeature(const int theIndex) = 0;
+ //! Performs synchronization of transactions with the module document:
+ //! If some document is not active (by undo of activation) but in memory,
+ //! on activation the transactions must be synchronised because all redos performed
+ //! wihtout this participation
+ virtual void synchronizeTransactions() = 0;
+
+ //! Returns feature by the id of the feature (produced by the Data "featureId" method)
+ virtual std::shared_ptr<ModelAPI_Feature> featureById(const int theId) = 0;
+
+ //! To virtually destroy the fields of successors