+\param hasCompositeOwner will be set to true if list contains Sub-Feature objects
+*/
+MODULEBASE_EXPORT void checkObjects(const QObjectPtrList& theObjects, bool& hasResult,
+ bool& hasFeature, bool& hasParameter, bool& hasCompositeOwner);
+
+/*! Sets the default coeffient into the driver calculated accordingly the shape type.
+It provides 1.e-4 for a shape withe Edge shape type
+\param theShape a shape to define the deviation coeffient,
+\param theDrawer a drawer
+*/
+MODULEBASE_EXPORT void setDefaultDeviationCoefficient(const TopoDS_Shape& theShape,
+ const Handle(Prs3d_Drawer)& theDrawer);
+
+/*! Obtains the color from the property manager and converts it to the OCCT color
+\param theSection a property section
+\param theName a property item name
+\param theDefault a default color value
+\return quantity color
+*/
+MODULEBASE_EXPORT Quantity_Color color(const std::string& theSection,
+ const std::string& theName,
+ const std::string& theDefault);
+
+
+/// Returns the object from the attribute
+/// \param theObj an object
+MODULEBASE_EXPORT ObjectPtr getObject(const AttributePtr& theAttribute);
+
+/// Returns the object from the attribute
+/// \param theObj an object
+MODULEBASE_EXPORT TopAbs_ShapeEnum getCompoundSubType(const TopoDS_Shape& theShape);
+
+/// Returns list of parameters accessible in the active part and partset
+/// \theParameters a list of parameter names
+MODULEBASE_EXPORT void getParameters(QStringList& theParameters);
+
+/// Returns list of parameters accessible in the active part and partset
+/// \theParameters a list of parameter names
+MODULEBASE_EXPORT std::string findGreedAttribute(ModuleBase_IWorkshop* theWorkshop,
+ const FeaturePtr& theFeature);
+
+/// Set the object to the attribute depending on the attribute type. If it is a list,
+/// the values are appended if they are not in the list yet.
+/// \param theAttribute an attribute where the object and shape are set
+/// \param theObject an object
+/// \param theShape a shape
+/// \param theWorkshop to find an attribute for the given shape for attribute reference
+/// \param theTemporarily if it is true, do not store and name the added in the data framework
+/// It is useful for attribute selection
+MODULEBASE_EXPORT bool hasObject(const AttributePtr& theAttribute, const ObjectPtr& theObject,
+ const std::shared_ptr<GeomAPI_Shape>& theShape,
+ ModuleBase_IWorkshop* theWorkshop,
+ const bool theTemporarily);
+
+/// Set the object to the attribute depending on the attribute type. If it is a list,
+/// the values are appended if they are not in the list yet.
+/// \param theAttribute an attribute where the object and shape are set
+/// \param theObject an object
+/// \param theShape a shape
+/// \param theWorkshop to find an attribute for the given shape for attribute reference
+/// \param theTemporarily if it is true, do not store and name the added in the data framework
+/// \param theCheckIfAttributeHasObject if it is true, the check isInList is called
+/// It is useful for attribute selection
+MODULEBASE_EXPORT void setObject(const AttributePtr& theAttribute, const ObjectPtr& theObject,
+ const std::shared_ptr<GeomAPI_Shape>& theShape,
+ ModuleBase_IWorkshop* theWorkshop,
+ const bool theTemporarily,
+ const bool theCheckIfAttributeHasObject);
+
+/// Returns the shape of the attribute. If the attribute is AttributeRefAttrPtr, the shape is found
+/// using current module of the given workshop.
+/// \param theAttribute an attribute where the shape is set
+/// \param theWorkshop to find a shape for the given attribute
+MODULEBASE_EXPORT std::shared_ptr<GeomAPI_Shape> getShape(const AttributePtr& theAttribute,
+ ModuleBase_IWorkshop* theWorkshop);
+
+/// Flush updated signal for the object. The viewer update is blocked in the process
+/// \param theObject parameter of the signal
+MODULEBASE_EXPORT void flushUpdated(ObjectPtr theObject);
+
+/// Sends a message about block/unblock viewer updating
+/// \param theValue a boolean value
+MODULEBASE_EXPORT void blockUpdateViewer(const bool theValue);
+
+/// Generates a wrapped string to be less than value with '\n' separators
+/// \param theValue a boolean value
+/// \param theWidget a widget to know the font
+/// \param theMaxLineInPixels a maximum line width in pixels
+MODULEBASE_EXPORT QString wrapTextByWords(const QString& theValue, QWidget* theWidget,
+ int theMaxLineInPixels = 150);
+
+/*!
+ Returns a container of referenced feature to the current object in the object document.
+ \param theObject an object, which will be casted to a feature type
+ \param theRefFeatures an output container
+ */
+void MODULEBASE_EXPORT refsToFeatureInFeatureDocument(const ObjectPtr& theObject,
+ std::set<FeaturePtr>& theRefFeatures);
+
+
+/*!
+ Returns true if the object if a sub child of the feature. The feature is casted to the
+ composite one. If it is possible, the sub object check happens. The method is applyed
+ recursively to the feature subs.
+ \param theObject a candidate to be a sub object
+ \param theFeature a candidate to be a composite feature
+ \return a boolean value
+ */
+bool MODULEBASE_EXPORT isSubOfComposite(const ObjectPtr& theObject, const FeaturePtr& theFeature);
+
+
+/*!
+* Returns true if the result is a sub object of some composite object
+* \param theObject a result object
+* \returns boolean value