+ return toErase;
+}
+
+//================================================================================
+/*!
+ * \brief Check if a command is or can be cleared
+ */
+//================================================================================
+
+bool _pySelfEraser::IsAliveCmd( const Handle(_pyCommand)& theCmd )
+{
+ if ( theCmd->IsEmpty() )
+ return false;
+
+ if ( !theGen->IsToKeepAllCommands() )
+ {
+ const _pyID& objID = theCmd->GetObject();
+ Handle( _pyObject ) obj = theGen->FindObject( objID );
+ if ( !obj.IsNull() )
+ return !obj->CanClear();
+ }
+ return true;
+}
+
+//================================================================================
+/*!
+ * \brief SelfEraser erases creation command if none of it's commands invoked
+ * (e.g. filterManager) or it's not used as a command argument (e.g. a filter)
+ */
+//================================================================================
+
+void _pySelfEraser::Flush()
+{
+ if ( CanClear() )