basctl/source/basicide/baside2.cxx                        |    6 
 basctl/source/basicide/baside2.hxx                        |    4 
 basctl/source/basicide/baside2b.cxx                       |   24 +-
 basctl/source/basicide/basides1.cxx                       |    2 
 basctl/source/basicide/basobj2.cxx                        |    8 
 basctl/source/basicide/macrodlg.cxx                       |    2 
 basic/qa/cppunit/basic_coverage.cxx                       |    2 
 basic/qa/cppunit/basictest.cxx                            |    6 
 basic/qa/cppunit/test_nested_struct.cxx                   |   10 
 basic/qa/cppunit/test_vba.cxx                             |    8 
 basic/source/basmgr/basmgr.cxx                            |   24 +-
 basic/source/classes/errobject.cxx                        |    3 
 basic/source/classes/eventatt.cxx                         |   21 -
 basic/source/classes/image.cxx                            |    2 
 basic/source/classes/sb.cxx                               |   23 +-
 basic/source/classes/sbunoobj.cxx                         |  154 +++++++-------
 basic/source/classes/sbxmod.cxx                           |   54 ++--
 basic/source/comp/codegen.cxx                             |    2 
 basic/source/runtime/methods.cxx                          |   14 -
 basic/source/runtime/methods1.cxx                         |    4 
 basic/source/runtime/props.cxx                            |    2 
 basic/source/runtime/runtime.cxx                          |  113 +++++-----
 basic/source/sbx/sbxarray.cxx                             |   22 +-
 basic/source/sbx/sbxexec.cxx                              |   24 +-
 basic/source/sbx/sbxobj.cxx                               |   61 ++---
 basic/source/sbx/sbxvar.cxx                               |    8 
 chart2/source/controller/dialogs/DataBrowser.cxx          |    4 
 dbaccess/source/ui/misc/TableCopyHelper.cxx               |    4 
 dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx     |    2 
 filter/source/msfilter/msdffimp.cxx                       |    8 
 filter/source/msfilter/svdfppt.cxx                        |    4 
 filter/source/msfilter/svxmsbas2.cxx                      |    2 
 idl/inc/basobj.hxx                                        |    2 
 idl/inc/globals.hxx                                       |    2 
 idl/inc/object.hxx                                        |    2 
 idl/source/objects/object.cxx                             |    4 
 idl/source/objects/slot.cxx                               |    6 
 idl/source/objects/types.cxx                              |    4 
 idl/source/prj/parser.cxx                                 |   22 +-
 include/basic/sbmeth.hxx                                  |    2 
 include/basic/sbstar.hxx                                  |    2 
 include/basic/sbxobj.hxx                                  |    6 
 include/sfx2/lnkbase.hxx                                  |    4 
 include/sfx2/viewfrm.hxx                                  |    3 
 include/svl/lckbitem.hxx                                  |    2 
 include/svx/gridctrl.hxx                                  |    2 
 include/tools/inetmsg.hxx                                 |    2 
 include/tools/ref.hxx                                     |    5 
 include/tools/stream.hxx                                  |    2 
 reportdesign/source/filter/xml/xmlfilter.cxx              |    2 
 reportdesign/source/ui/dlg/GroupsSorting.cxx              |    2 
 sc/qa/unit/bugfix-test.cxx                                |    2 
 sc/qa/unit/copy_paste_test.cxx                            |    4 
 sc/qa/unit/subsequent_export-test.cxx                     |   68 +++---
 sc/source/core/data/validat.cxx                           |    2 
 sc/source/core/tool/interpr4.cxx                          |   10 
 sc/source/filter/excel/excel.cxx                          |    2 
 sc/source/filter/excel/excimp8.cxx                        |    2 
 sc/source/filter/excel/expop2.cxx                         |    6 
 sc/source/filter/excel/xestream.cxx                       |    2 
 sc/source/filter/ftools/ftools.cxx                        |    2 
 sc/source/filter/html/htmlpars.cxx                        |    4 
 sc/source/filter/oox/worksheetsettings.cxx                |    3 
 sc/source/filter/xcl97/xcl97rec.cxx                       |    2 
 sc/source/filter/xml/xmlexprt.cxx                         |    2 
 sc/source/ui/app/drwtrans.cxx                             |    2 
 sc/source/ui/app/seltrans.cxx                             |    8 
 sc/source/ui/app/transobj.cxx                             |    4 
 sc/source/ui/docshell/docfunc.cxx                         |    2 
 sc/source/ui/docshell/docsh3.cxx                          |    2 
 sc/source/ui/docshell/externalrefmgr.cxx                  |    4 
 sc/source/ui/pagedlg/areasdlg.cxx                         |    2 
 sc/source/ui/unoobj/viewuno.cxx                           |    2 
 sc/source/ui/vba/vbaapplication.cxx                       |    6 
 sc/source/ui/view/drawvie4.cxx                            |    2 
 sc/source/ui/view/gridwin4.cxx                            |    2 
 sc/source/ui/view/viewdata.cxx                            |    2 
 sc/source/ui/view/viewfun2.cxx                            |    2 
 sc/source/ui/view/viewfun3.cxx                            |    6 
 sc/source/ui/view/viewfun5.cxx                            |    2 
 scripting/source/basprov/basmodnode.cxx                   |    4 
 scripting/source/basprov/basscript.cxx                    |   18 -
 sd/qa/unit/HtmlExportTest.cxx                             |    2 
 sd/qa/unit/export-tests-ooxml1.cxx                        |   46 ++--
 sd/qa/unit/export-tests-ooxml2.cxx                        |   42 +--
 sd/qa/unit/export-tests.cxx                               |   14 -
 sd/qa/unit/import-tests.cxx                               |    2 
 sd/source/core/drawdoc.cxx                                |    2 
 sd/source/filter/eppt/eppt.cxx                            |    6 
 sd/source/filter/ppt/pptin.cxx                            |    2 
 sd/source/filter/ppt/propread.cxx                         |    4 
 sd/source/ui/app/sdxfer.cxx                               |    2 
 sd/source/ui/slidesorter/controller/SlsClipboard.cxx      |    2 
 sd/source/ui/slidesorter/controller/SlsSlotManager.cxx    |    6 
 sd/source/ui/view/ViewClipboard.cxx                       |    2 
 sd/source/ui/view/sdview3.cxx                             |    4 
 sfx2/source/appl/macroloader.cxx                          |    4 
 sfx2/source/appl/xpackcreator.cxx                         |    2 
 sfx2/source/bastyp/progress.cxx                           |   18 -
 sfx2/source/doc/docfile.cxx                               |    2 
 sfx2/source/doc/doctempl.cxx                              |    2 
 sfx2/source/doc/printhelper.cxx                           |   10 
 sfx2/source/doc/sfxbasemodel.cxx                          |   74 +++---
 sfx2/source/view/viewfrm.cxx                              |    6 
 sot/source/sdstor/storage.cxx                             |    4 
 sot/source/sdstor/ucbstorage.cxx                          |    8 
 starmath/qa/cppunit/test_cursor.cxx                       |    8 
 starmath/qa/cppunit/test_node.cxx                         |    2 
 starmath/qa/cppunit/test_nodetotextvisitors.cxx           |    8 
 starmath/qa/cppunit/test_parse.cxx                        |    2 
 starmath/qa/extras/mmlexport-test.cxx                     |    2 
 starmath/qa/extras/mmlimport-test.cxx                     |    2 
 starmath/source/document.cxx                              |    2 
 starmath/source/smdetect.cxx                              |    2 
 starmath/source/unofilter.cxx                             |    2 
 svl/source/items/lckbitem.cxx                             |    4 
 svx/source/dialog/charmap.cxx                             |    6 
 svx/source/fmcomp/fmgridif.cxx                            |    2 
 svx/source/fmcomp/gridctrl.cxx                            |   12 -
 svx/source/gallery2/galtheme.cxx                          |    4 
 sw/source/core/crsr/bookmrk.cxx                           |    2 
 sw/source/core/doc/DocumentLinksAdministrationManager.cxx |    4 
 sw/source/core/docnode/section.cxx                        |    8 
 sw/source/core/fields/ddefld.cxx                          |   10 
 sw/source/core/graphic/ndgrf.cxx                          |   28 +-
 sw/source/filter/basflt/shellio.cxx                       |    2 
 sw/source/filter/ww8/wrtww8gr.cxx                         |    2 
 sw/source/filter/ww8/ww8glsy.cxx                          |    2 
 sw/source/filter/ww8/ww8par.cxx                           |   10 
 sw/source/filter/ww8/ww8par4.cxx                          |    6 
 sw/source/filter/ww8/ww8par5.cxx                          |    2 
 sw/source/ui/index/cnttab.cxx                             |   18 -
 sw/source/uibase/dbui/dbmgr.cxx                           |   14 -
 sw/source/uibase/uno/unomailmerge.cxx                     |    6 
 unotools/source/ucbhelper/ucblockbytes.cxx                |    4 
 unotools/source/ucbhelper/ucbstreamhelper.cxx             |   11 -
 vcl/quartz/salgdi.cxx                                     |    8 
 vcl/source/outdev/font.cxx                                |    2 
 vcl/unx/generic/glyphs/freetype_glyphcache.cxx            |    6 
 vcl/win/gdi/salfont.cxx                                   |   14 -
 writerperfect/source/common/WPXSvInputStream.cxx          |    2 
 141 files changed, 685 insertions(+), 684 deletions(-)

New commits:
commit f004aa99514d385f3ee254bba735f5eaeb7d9ad8
Author: Jacek Fraczek <fraczek.ja...@gmail.com>
Date:   Wed Oct 5 22:00:51 2016 +0200

    tdf#89307: Removed SvRef::operator T*()
    
    Conditional statements are using SvRef::Is() method.
    Changed static_cast<T*>(svRef<T>) occurances to svRef.get().
    Added operator == and != to SvRef.
    
    SbxObject::Execute is using SbxVariableRef internally.
    SbxObject::FindQualified is using SbxVariableRef internally.
    
    Change-Id: I45b553e35d8fca9bf71163e6eefc60802a066395
    Reviewed-on: https://gerrit.libreoffice.org/29621
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/basctl/source/basicide/baside2.cxx 
b/basctl/source/basicide/baside2.cxx
index 11872eb..7ece041 100644
--- a/basctl/source/basicide/baside2.cxx
+++ b/basctl/source/basicide/baside2.cxx
@@ -285,7 +285,7 @@ void ModulWindow::CheckCompileBasic()
 
             if ( bDone )
             {
-                GetBreakPoints().SetBreakPointsInBasic( m_xModule );
+                GetBreakPoints().SetBreakPointsInBasic( m_xModule.get() );
             }
 
             GetShell()->GetViewFrame()->GetWindow().LeaveWait();
@@ -1280,7 +1280,7 @@ void ModulWindow::BasicStarted()
         if ( rList.size() )
         {
             rList.ResetHitCount();
-            rList.SetBreakPointsInBasic( m_xModule );
+            rList.SetBreakPointsInBasic( m_xModule.get() );
             for ( sal_uInt16 nMethod = 0; nMethod < 
m_xModule->GetMethods()->Count(); nMethod++ )
             {
                 SbMethod* pMethod = 
static_cast<SbMethod*>(m_xModule->GetMethods()->Get( nMethod ));
@@ -1400,7 +1400,7 @@ void ModulWindow::UpdateModule ()
     OUString const aModule = getTextEngineText(*GetEditEngine());
 
     // update module in basic
-    assert(m_xModule);
+    assert(m_xModule.Is());
 
     // update module in module window
     SetModule(aModule);
diff --git a/basctl/source/basicide/baside2.hxx 
b/basctl/source/basicide/baside2.hxx
index 2397694..c8bf2e6 100644
--- a/basctl/source/basicide/baside2.hxx
+++ b/basctl/source/basicide/baside2.hxx
@@ -344,9 +344,9 @@ public:
     virtual void    SetReadOnly (bool bReadOnly) override;
     virtual bool    IsReadOnly() override;
 
-    StarBASIC*      GetBasic() { XModule(); return m_xBasic; }
+    StarBASIC*      GetBasic() { XModule(); return m_xBasic.get(); }
 
-    SbModule*       GetSbModule() { return m_xModule; }
+    SbModule*       GetSbModule() { return m_xModule.get(); }
     void            SetSbModule( SbModule* pModule ) { m_xModule = pModule; }
     OUString        GetSbModuleName();
 
diff --git a/basctl/source/basicide/baside2b.cxx 
b/basctl/source/basicide/baside2b.cxx
index 57f04b0..c83bc7b 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -645,7 +645,7 @@ void EditorWindow::HandleAutoCorrect()
         else
         {
             //autocorrect procedures
-            SbxArray* pArr = rModulWindow.GetSbModule()->GetMethods();
+            SbxArray* pArr = rModulWindow.GetSbModule()->GetMethods().get();
             for( sal_uInt32 i=0; i < pArr->Count32(); ++i )
             {
                 if( pArr->Get32(i)->GetName().equalsIgnoreAsciiCase( sStr ) )
@@ -1724,7 +1724,7 @@ SbxDimArray* WatchItem::GetRootArray()
     WatchItem* pRootItem = GetRootItem();
     SbxDimArray* pRet = nullptr;
     if( pRootItem )
-        pRet = pRootItem->mpArray;
+        pRet = pRootItem->mpArray.get();
     return pRet;
 }
 
@@ -2132,7 +2132,7 @@ void WatchTreeListBox::RequestingChildren( 
SvTreeListEntry * pParent )
     SvTreeListEntry* pEntry = pParent;
     WatchItem* pItem = static_cast<WatchItem*>(pEntry->GetUserData());
 
-    SbxDimArray* pArray = pItem->mpArray;
+    SbxDimArray* pArray = pItem->mpArray.get();
     SbxDimArray* pRootArray = pItem->GetRootArray();
     bool bArrayIsRootArray = false;
     if( !pArray && pRootArray )
@@ -2141,7 +2141,7 @@ void WatchTreeListBox::RequestingChildren( 
SvTreeListEntry * pParent )
         bArrayIsRootArray = true;
     }
 
-    SbxObject* pObj = pItem->mpObject;
+    SbxObject* pObj = pItem->mpObject.get();
     if( pObj )
     {
         createAllObjectProperties( pObj );
@@ -2231,7 +2231,7 @@ SbxBase* WatchTreeListBox::ImplGetSBXForEntry( 
SvTreeListEntry* pEntry, bool& rb
     WatchItem* pParentItem = pParentEntry ? 
static_cast<WatchItem*>(pParentEntry->GetUserData()) : nullptr;
     if( pParentItem )
     {
-        SbxObject* pObj = pParentItem->mpObject;
+        SbxObject* pObj = pParentItem->mpObject.get();
         SbxDimArray* pArray;
         if( pObj )
         {
@@ -2272,7 +2272,7 @@ bool WatchTreeListBox::EditingEntry( SvTreeListEntry* 
pEntry, Selection& )
         if (IsSbxVariable(pSbx) || bArrayElement)
         {
             // Accept no objects and only end nodes of arrays for editing
-            if( !pItem->mpObject && (pItem->mpArray == nullptr || 
pItem->nDimLevel == pItem->nDimCount) )
+            if( !pItem->mpObject.Is() && ( !pItem->mpArray.Is() || 
pItem->nDimLevel == pItem->nDimCount ) )
             {
                 aEditingRes = SvHeaderTabListBox::GetEntryText( pEntry, 
ITEM_ID_VALUE-1 );
                 aEditingRes = comphelper::string::strip(aEditingRes, ' ');
@@ -2349,7 +2349,7 @@ OUString implCreateTypeStringForDimArray( WatchItem* 
pItem, SbxDataType eType )
 {
     OUString aRetStr = getBasicTypeName( eType );
 
-    SbxDimArray* pArray = pItem->mpArray;
+    SbxDimArray* pArray = pItem->mpArray.get();
     if( !pArray )
         pArray = pItem->GetRootArray();
     if( pArray )
@@ -2427,7 +2427,7 @@ void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
                     // consider multidimensinal arrays!
                     if (SbxDimArray* pNewArray = 
dynamic_cast<SbxDimArray*>(pVar->GetObject()))
                     {
-                        SbxDimArray* pOldArray = pItem->mpArray;
+                        SbxDimArray* pOldArray = pItem->mpArray.get();
 
                         bool bArrayChanged = false;
                         if( pNewArray != nullptr && pOldArray != nullptr )
@@ -2494,7 +2494,7 @@ void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
                 {
                     if (SbxObject* pObj = 
dynamic_cast<SbxObject*>(pVar->GetObject()))
                     {
-                        if (pItem->mpObject && !pItem->maMemberList.empty())
+                        if ( pItem->mpObject.Is() && 
!pItem->maMemberList.empty() )
                         {
                             bool bObjChanged = false; // Check if member list 
has changed
                             SbxArray* pProps = pObj->GetProperties();
@@ -2522,7 +2522,7 @@ void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
                     else
                     {
                         aWatchStr = "Null";
-                        if( pItem->mpObject != nullptr )
+                        if( pItem->mpObject.Is() )
                         {
                             bCollapse = true;
                             pItem->clearWatchItem();
@@ -2533,7 +2533,7 @@ void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
                 }
                 else
                 {
-                    if( pItem->mpObject != nullptr )
+                    if( pItem->mpObject.Is() )
                     {
                         bCollapse = true;
                         pItem->clearWatchItem();
@@ -2575,7 +2575,7 @@ void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
         }
         else if( bBasicStopped )
         {
-            if( pItem->mpObject || pItem->mpArray )
+            if( pItem->mpObject.Is() || pItem->mpArray.Is() )
             {
                 implCollapseModifiedObjectEntry( pEntry, this );
                 pItem->mpObject = nullptr;
diff --git a/basctl/source/basicide/basides1.cxx 
b/basctl/source/basicide/basides1.cxx
index 5f41f79..59c3006 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -311,7 +311,7 @@ void Shell::ExecuteGlobal( SfxRequest& rReq )
                             pModule = pBasic->FindModule( aModName );
                     }
                     else
-                        pModule = pBasic->GetModules().front();
+                        pModule = pBasic->GetModules().front().get();
                 }
                 DBG_ASSERT( pModule, "Kein Modul!" );
                 if ( pModule && !pModule->GetMethods()->Find( 
rInfo.GetMethod(), SbxClassType::Method ) )
diff --git a/basctl/source/basicide/basobj2.cxx 
b/basctl/source/basicide/basobj2.cxx
index 0f383e4..5d939a7 100644
--- a/basctl/source/basicide/basobj2.cxx
+++ b/basctl/source/basicide/basobj2.cxx
@@ -227,7 +227,7 @@ namespace
         if ( pData->aDocument.isDocument() )
             pUndoGuard.reset( new ::framework::DocumentUndoGuard( 
pData->aDocument.getDocument() ) );
 
-        RunMethod(pData->xMethod);
+        RunMethod( pData->xMethod.get() );
     }
 }
 
@@ -374,7 +374,7 @@ Sequence< OUString > GetMethodNames( const ScriptDocument& 
rDocument, const OUSt
         {
             xModule = new SbModule( rModName );
             xModule->SetSource32( aOUSource );
-            pMod = xModule;
+            pMod = xModule.get();
         }
 
         sal_uInt16 nCount = pMod->GetMethods()->Count();
@@ -424,9 +424,9 @@ bool HasMethod (
         {
             xModule = new SbModule( rModName );
             xModule->SetSource32( aOUSource );
-            pMod = xModule;
+            pMod = xModule.get();
         }
-        SbxArray* pMethods = pMod->GetMethods();
+        SbxArray* pMethods = pMod->GetMethods().get();
         if ( pMethods )
         {
             SbMethod* pMethod = static_cast<SbMethod*>(pMethods->Find( 
rMethName, SbxClassType::Method ));
diff --git a/basctl/source/basicide/macrodlg.cxx 
b/basctl/source/basicide/macrodlg.cxx
index a14f984..dcbccac 100644
--- a/basctl/source/basicide/macrodlg.cxx
+++ b/basctl/source/basicide/macrodlg.cxx
@@ -361,7 +361,7 @@ SbMethod* MacroChooser::CreateMacro()
             pModule = pBasic->FindModule( aModName );
         }
         else if ( !pBasic->GetModules().empty() )
-            pModule = pBasic->GetModules().front();
+            pModule = pBasic->GetModules().front().get();
 
         if ( !pModule )
         {
diff --git a/basic/qa/cppunit/basic_coverage.cxx 
b/basic/qa/cppunit/basic_coverage.cxx
index 34f6ae3..17612c4 100644
--- a/basic/qa/cppunit/basic_coverage.cxx
+++ b/basic/qa/cppunit/basic_coverage.cxx
@@ -77,7 +77,7 @@ void Coverage::run_test(const OUString& sFileURL)
     if( !testMacro.HasError() )
     {
         SbxVariableRef pResult = testMacro.Run();
-        if( pResult && pResult->GetInteger() == 1 )
+        if( pResult.Is() && pResult->GetInteger() == 1 )
         {
             bResult = true;
         }
diff --git a/basic/qa/cppunit/basictest.cxx b/basic/qa/cppunit/basictest.cxx
index 7b5aa22..2c4e86f 100644
--- a/basic/qa/cppunit/basictest.cxx
+++ b/basic/qa/cppunit/basictest.cxx
@@ -78,7 +78,7 @@ SbxVariableRef MacroSnippet::Run( const css::uno::Sequence< 
css::uno::Any >& rAr
     SbxVariableRef pReturn = nullptr;
     if ( !Compile() )
         return pReturn;
-    SbMethod* pMeth = mpMod ? static_cast<SbMethod*>(mpMod->Find( 
"doUnitTest",  SbxClassType::Method )) : nullptr;
+    SbMethod* pMeth = mpMod.Is() ? static_cast<SbMethod*>(mpMod->Find( 
"doUnitTest",  SbxClassType::Method )) : nullptr;
     if ( pMeth )
     {
         if ( rArgs.getLength() )
@@ -90,7 +90,7 @@ SbxVariableRef MacroSnippet::Run( const css::uno::Sequence< 
css::uno::Any >& rAr
                 unoToSbxValue( pVar, rArgs[ i ] );
                 aArgs->Put(  pVar, i + 1 );
             }
-            pMeth->SetParameters( aArgs );
+            pMeth->SetParameters( aArgs.get() );
         }
         pReturn = new SbxMethod( *static_cast<SbxMethod*>(pMeth));
     }
@@ -105,7 +105,7 @@ SbxVariableRef MacroSnippet::Run()
 
 bool MacroSnippet::Compile()
 {
-    CPPUNIT_ASSERT_MESSAGE("module is NULL", mpMod != nullptr );
+    CPPUNIT_ASSERT_MESSAGE("module is NULL", mpMod.get() != nullptr );
     mpMod->Compile();
     return !mbError;
 }
diff --git a/basic/qa/cppunit/test_nested_struct.cxx 
b/basic/qa/cppunit/test_nested_struct.cxx
index 2fc0600..b1f060d 100644
--- a/basic/qa/cppunit/test_nested_struct.cxx
+++ b/basic/qa/cppunit/test_nested_struct.cxx
@@ -182,7 +182,7 @@ void Nested_Struct::testAssign1Alt()
     myMacro.Compile();
     CPPUNIT_ASSERT_MESSAGE("testAssign1Alt fails with compile 
error",!myMacro.HasError() );
     SbxVariableRef pNew = myMacro.Run();
-    uno::Any aRet = sbxToUnoValue( pNew );
+    uno::Any aRet = sbxToUnoValue( pNew.get() );
     table::TableBorder aBorder;
     aRet >>= aBorder;
 
@@ -205,7 +205,7 @@ void Nested_Struct::testOldAssignAlt()
     myMacro.Compile();
     CPPUNIT_ASSERT_MESSAGE("testOldAssign fails with compile 
error",!myMacro.HasError() );
     SbxVariableRef pNew = myMacro.Run();
-    uno::Any aRet = sbxToUnoValue( pNew );
+    uno::Any aRet = sbxToUnoValue( pNew.get() );
     table::TableBorder aBorder;
     aRet >>= aBorder;
 
@@ -229,7 +229,7 @@ void Nested_Struct::testUnfixedVarAssignAlt()
     myMacro.Compile();
     CPPUNIT_ASSERT_MESSAGE("testUnfixedVarAssignAlt fails with compile 
error",!myMacro.HasError() );
     SbxVariableRef pNew = myMacro.Run();
-    uno::Any aRet = sbxToUnoValue( pNew );
+    uno::Any aRet = sbxToUnoValue( pNew.get() );
 
     uno::Sequence< uno::Any > aResult;
     bool bRes = aRet >>= aResult;
@@ -265,7 +265,7 @@ void Nested_Struct::testFixedVarAssignAlt()
     myMacro.Compile();
     CPPUNIT_ASSERT_MESSAGE("testFixedVarAssignAlt fails with compile 
error",!myMacro.HasError() );
     SbxVariableRef pNew = myMacro.Run();
-    uno::Any aRet = sbxToUnoValue( pNew );
+    uno::Any aRet = sbxToUnoValue( pNew.get() );
 
     uno::Sequence< uno::Any > aResult;
     bool bRes = aRet >>= aResult;
@@ -292,7 +292,7 @@ void Nested_Struct::testUnoAccess()
     myMacro.Compile();
     CPPUNIT_ASSERT_MESSAGE("testUnoAccess fails with compile 
error",!myMacro.HasError() );
     SbxVariableRef pNew = myMacro.Run();
-    uno::Any aRet = sbxToUnoValue( pNew );
+    uno::Any aRet = sbxToUnoValue( pNew.get() );
     awt::WindowDescriptor aWinDesc;
     aRet >>= aWinDesc;
 
diff --git a/basic/qa/cppunit/test_vba.cxx b/basic/qa/cppunit/test_vba.cxx
index 7673f85..40ed225 100644
--- a/basic/qa/cppunit/test_vba.cxx
+++ b/basic/qa/cppunit/test_vba.cxx
@@ -75,12 +75,12 @@ void VBATest::testMiscVBAFunctions()
         MacroSnippet myMacro;
         myMacro.LoadSourceFromFile( sMacroURL );
         SbxVariableRef pReturn = myMacro.Run();
-        if ( pReturn )
+        if ( pReturn.Is() )
         {
             fprintf(stderr, "macro result for %s\n", macroSource[ i ] );
             fprintf(stderr, "macro returned:\n%s\n", OUStringToOString( 
pReturn->GetOUString(), RTL_TEXTENCODING_UTF8 ).getStr() );
         }
-        CPPUNIT_ASSERT_MESSAGE("No return variable huh?", pReturn != nullptr );
+        CPPUNIT_ASSERT_MESSAGE("No return variable huh?", pReturn.get() != 
nullptr );
         CPPUNIT_ASSERT_EQUAL_MESSAGE("Result not as expected", OUString("OK"), 
pReturn->GetOUString() );
     }
 }
@@ -146,12 +146,12 @@ void VBATest::testMiscOLEStuff()
         MacroSnippet myMacro;
         myMacro.LoadSourceFromFile( sMacroURL );
         SbxVariableRef pReturn = myMacro.Run( aArgs );
-        if ( pReturn )
+        if ( pReturn.Is() )
         {
             fprintf(stderr, "macro result for %s\n", macroSource[ i ] );
             fprintf(stderr, "macro returned:\n%s\n", OUStringToOString( 
pReturn->GetOUString(), RTL_TEXTENCODING_UTF8 ).getStr() );
         }
-        CPPUNIT_ASSERT_MESSAGE("No return variable huh?", pReturn != NULL );
+        CPPUNIT_ASSERT_MESSAGE("No return variable huh?", pReturn.get() != 
NULL );
         CPPUNIT_ASSERT_MESSAGE("Result not as expected", 
pReturn->GetOUString() == "OK" );
     }
 #else
diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx
index 66e16c5..37bf1aa 100644
--- a/basic/source/basmgr/basmgr.cxx
+++ b/basic/source/basmgr/basmgr.cxx
@@ -599,12 +599,12 @@ void BasicManager::SetLibraryContainerInfo( const 
LibraryContainerInfo& rInfo )
             // No libs? Maybe an 5.2 document already loaded
             for (auto const& rpBasLibInfo : mpImpl->aLibs)
             {
-                StarBASIC* pLib = rpBasLibInfo->GetLib();
+                StarBASIC* pLib = rpBasLibInfo->GetLib().get();
                 if( !pLib )
                 {
                     bool bLoaded = ImpLoadLibrary( rpBasLibInfo.get(), nullptr 
);
                     if( bLoaded )
-                        pLib = rpBasLibInfo->GetLib();
+                        pLib = rpBasLibInfo->GetLib().get();
                 }
                 if( pLib )
                 {
@@ -973,7 +973,7 @@ bool BasicManager::ImpLoadLibrary( BasicLibInfo* pLibInfo, 
SotStorage* pCurStora
                     pLibInfo->SetPassword( aPassword );
                 }
                 xBasicStream->SetCryptMaskKey(OString());
-                CheckModules( pLibInfo->GetLib(), pLibInfo->IsReference() );
+                CheckModules( pLibInfo->GetLib().get(), 
pLibInfo->IsReference() );
             }
             return bLoaded;
         }
@@ -1013,7 +1013,7 @@ bool BasicManager::ImplLoadBasic( SvStream& rStrm, 
StarBASICRef& rOldBasic ) con
     {
         if( nullptr != dynamic_cast<const StarBASIC*>( &xNew ) )
         {
-            StarBASIC* pNew = 
static_cast<StarBASIC*>(static_cast<SbxBase*>(xNew));
+            StarBASIC* pNew = static_cast<StarBASIC*>(xNew.get());
             // Use the Parent of the old BASICs
             if( rOldBasic.Is() )
             {
@@ -1050,7 +1050,7 @@ void BasicManager::CheckModules( StarBASIC* pLib, bool 
bReference )
 
     for ( const auto& pModule: pLib->GetModules() )
     {
-        DBG_ASSERT( pModule, "Module not received!" );
+        DBG_ASSERT( pModule.get(), "Module not received!" );
         if ( !pModule->IsCompiled() && !StarBASIC::GetErrorCode() )
         {
             pModule->Compile();
@@ -1212,7 +1212,7 @@ bool BasicManager::RemoveLib( sal_uInt16 nLib, bool 
bDelBasicFromStorage )
     }
     if ((*itLibInfo)->GetLib().Is())
     {
-        GetStdLib()->Remove( (*itLibInfo)->GetLib() );
+        GetStdLib()->Remove( (*itLibInfo)->GetLib().get() );
     }
     mpImpl->aLibs.erase(itLibInfo);
     return true;    // Remove was successful, del unimportant
@@ -1228,7 +1228,7 @@ StarBASIC* BasicManager::GetLib( sal_uInt16 nLib ) const
     DBG_ASSERT( nLib < mpImpl->aLibs.size(), "Lib does not exist!" );
     if ( nLib < mpImpl->aLibs.size() )
     {
-        return mpImpl->aLibs[nLib]->GetLib();
+        return mpImpl->aLibs[nLib]->GetLib().get();
     }
     return nullptr;
 }
@@ -1245,7 +1245,7 @@ StarBASIC* BasicManager::GetLib( const OUString& rName ) 
const
     {
         if (rpLib->GetLibName().equalsIgnoreAsciiCase(rName)) // Check if 
available...
         {
-            return rpLib->GetLib();
+            return rpLib->GetLib().get();
         }
     }
     return nullptr;
@@ -1331,7 +1331,7 @@ StarBASIC* BasicManager::CreateLib( const OUString& 
rLibName )
     pLibInfo->SetLib( pNew );
     pLibInfo->SetLibName( rLibName );
     pLibInfo->GetLib()->SetName( rLibName );
-    return pLibInfo->GetLib();
+    return pLibInfo->GetLib().get();
 }
 
 // For XML import/export:
@@ -1395,7 +1395,7 @@ BasicLibInfo* BasicManager::FindLibInfo( StarBASIC* 
pBasic )
 {
     for (auto const& rpLib : mpImpl->aLibs)
     {
-        if (rpLib->GetLib() == pBasic)
+        if (rpLib->GetLib().get() == pBasic)
         {
             return rpLib.get();
         }
@@ -1443,7 +1443,7 @@ uno::Any BasicManager::SetGlobalUNOConstant( const 
OUString& rName, const uno::A
 
     SbxObjectRef xUnoObj = GetSbUnoObject( rName, _rValue );
     xUnoObj->SetFlag( SbxFlagBits::DontStore );
-    pStandardLib->Insert( xUnoObj );
+    pStandardLib->Insert( xUnoObj.get() );
 
     return aOldValue;
 }
@@ -1992,7 +1992,7 @@ void DialogContainer_Impl::insertByName( const OUString& 
aName, const uno::Any&
     uno::Reference< script::XStarBasicDialogInfo > xMod;
     aElement >>= xMod;
     SbxObjectRef xDialog = implCreateDialog( xMod->getData() );
-    mpLib->Insert( xDialog );
+    mpLib->Insert( xDialog.get() );
 }
 
 void DialogContainer_Impl::removeByName( const OUString& Name )
diff --git a/basic/source/classes/errobject.cxx 
b/basic/source/classes/errobject.cxx
index 2391464..ddeb1ae 100644
--- a/basic/source/classes/errobject.cxx
+++ b/basic/source/classes/errobject.cxx
@@ -192,8 +192,7 @@ SbxErrObject::~SbxErrObject()
 uno::Reference< vba::XErrObject > const &
 SbxErrObject::getUnoErrObject()
 {
-    SbxVariable* pVar = getErrObject();
-    SbxErrObject* pGlobErr = static_cast< SbxErrObject* >(  pVar );
+    SbxErrObject* pGlobErr = static_cast< SbxErrObject* >(  
getErrObject().get() );
     return pGlobErr->m_xErr;
 }
 
diff --git a/basic/source/classes/eventatt.cxx 
b/basic/source/classes/eventatt.cxx
index c89e352..a90adf8 100644
--- a/basic/source/classes/eventatt.cxx
+++ b/basic/source/classes/eventatt.cxx
@@ -208,7 +208,7 @@ void BasicScriptListener_Impl::firing_impl( const 
ScriptEvent& aScriptEvent, Any
             aMacro = aMacro.copy( nLast );
         }
 
-        SbxObject* p = maBasicRef;
+        SbxObject* p = maBasicRef.get();
         SbxObject* pParent = p->GetParent();
         SbxObject* pParentParent = pParent ? pParent->GetParent() : nullptr;
 
@@ -253,14 +253,13 @@ void BasicScriptListener_Impl::firing_impl( const 
ScriptEvent& aScriptEvent, Any
         // Be still tolerant and make default search if no search basic exists
         if( bSearchLib && xLibSearchBasic.Is() )
         {
-            StarBASICRef xLibBasic;
             sal_Int16 nCount = xLibSearchBasic->GetObjects()->Count();
             for( sal_Int16 nObj = -1; nObj < nCount ; nObj++ )
             {
                 StarBASIC* pBasic;
                 if( nObj == -1 )
                 {
-                    pBasic = static_cast<StarBASIC*>(xLibSearchBasic);
+                    pBasic = xLibSearchBasic.get();
                 }
                 else
                 {
@@ -303,8 +302,8 @@ void BasicScriptListener_Impl::firing_impl( const 
ScriptEvent& aScriptEvent, Any
             for( sal_Int32 i = 0; i < nCnt; i++ )
             {
                 SbxVariableRef xVar = new SbxVariable( SbxVARIANT );
-                unoToSbxValue( static_cast<SbxVariable*>(xVar), pArgs[i] );
-                xArray->Put( xVar, sal::static_int_cast< sal_uInt16 >(i+1) );
+                unoToSbxValue( xVar.get(), pArgs[i] );
+                xArray->Put( xVar.get(), sal::static_int_cast< sal_uInt16 
>(i+1) );
             }
         }
 
@@ -312,12 +311,12 @@ void BasicScriptListener_Impl::firing_impl( const 
ScriptEvent& aScriptEvent, Any
         SbxVariableRef xValue = pRet ? new SbxVariable : nullptr;
         if( xArray.Is() )
         {
-            pMeth->SetParameters( xArray );
+            pMeth->SetParameters( xArray.get() );
         }
-        pMeth->Call( xValue );
+        pMeth->Call( xValue.get() );
         if( pRet )
         {
-            *pRet = sbxToUnoValue( xValue );
+            *pRet = sbxToUnoValue( xValue.get() );
         }
         pMeth->SetParameters( nullptr );
     }
@@ -432,12 +431,12 @@ void RTL_Impl_CreateUnoDialog( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
 
     // Get dialog
     SbxBaseRef pObj = rPar.Get( 1 )->GetObject();
-    if( !(pObj && nullptr != dynamic_cast<const SbUnoObject*>( &pObj )) )
+    if( !(pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( &pObj )) )
     {
         StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
         return;
     }
-    SbUnoObject* pUnoObj = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj));
+    SbUnoObject* pUnoObj = static_cast<SbUnoObject*>(pObj.get());
     Any aAnyISP = pUnoObj->getUnoAny();
     TypeClass eType = aAnyISP.getValueType().getTypeClass();
 
@@ -556,7 +555,7 @@ void RTL_Impl_CreateUnoDialog( StarBASIC* pBasic, SbxArray& 
rPar, bool bWrite )
     Any aRetVal;
     aRetVal <<= xCntrl;
     SbxVariableRef refVar = rPar.Get(0);
-    unoToSbxValue( static_cast<SbxVariable*>(refVar), aRetVal );
+    unoToSbxValue( refVar.get(), aRetVal );
 }
 
 
diff --git a/basic/source/classes/image.cxx b/basic/source/classes/image.cxx
index 05ec8a2..7c079a8 100644
--- a/basic/source/classes/image.cxx
+++ b/basic/source/classes/image.cxx
@@ -462,7 +462,7 @@ bool SbiImage::Save( SvStream& r, sal_uInt32 nVer )
         SbiCloseRecord( r, nPos );
     }
     // User defined types
-    if (rTypes)
+    if ( rTypes.Is() )
     {
         sal_uInt16 nTypes = rTypes->Count();
         if (nTypes > 0 )
diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx
index b47c3a8..704169b 100644
--- a/basic/source/classes/sb.cxx
+++ b/basic/source/classes/sb.cxx
@@ -232,7 +232,7 @@ StarBASIC* lclGetDocBasicForModule( SbModule* pModule )
 
 SbxObject* StarBASIC::getVBAGlobals( )
 {
-    if ( !pVBAGlobals )
+    if ( !pVBAGlobals.Is() )
     {
         Any aThisDoc;
         if ( GetUNOConstant("ThisComponent", aThisDoc) )
@@ -253,7 +253,7 @@ SbxObject* StarBASIC::getVBAGlobals( )
         const OUString aVBAHook("VBAGlobals");
         pVBAGlobals = static_cast<SbUnoObject*>(Find( aVBAHook , 
SbxClassType::DontCare ));
     }
-    return pVBAGlobals;
+    return pVBAGlobals.get();
 }
 
 //  i#i68894#
@@ -641,7 +641,7 @@ SbClassModuleObject::SbClassModuleObject( SbModule* 
pClassModule )
     ResetFlag( SbxFlagBits::GlobalSearch );
 
     // Copy the methods from original class module
-    SbxArray* pClassMethods = pClassModule->GetMethods();
+    SbxArray* pClassMethods = pClassModule->GetMethods().get();
     sal_uInt32 nMethodCount = pClassMethods->Count32();
     sal_uInt32 i;
     for( i = 0 ; i < nMethodCount ; i++ )
@@ -1098,11 +1098,12 @@ void StarBASIC::Insert( SbxVariable* pVar )
 
 void StarBASIC::Remove( SbxVariable* pVar )
 {
-    if( dynamic_cast<const SbModule*>(pVar) != nullptr)
+    SbModule* pModule = dynamic_cast<SbModule*>(pVar);
+    if( pModule )
     {
         // #87540 Can be last reference!
-        SbxVariableRef xVar = pVar;
-        pModules.erase(std::remove(pModules.begin(), pModules.end(), pVar));
+        SbModuleRef xVar = pModule;
+        pModules.erase(std::remove(pModules.begin(), pModules.end(), xVar));
         pVar->SetParent( nullptr );
         EndListening( pVar->GetBroadcaster() );
     }
@@ -1290,12 +1291,12 @@ SbxVariable* StarBASIC::Find( const OUString& rName, 
SbxClassType t )
         {
             if( rName.equalsIgnoreAsciiCase( RTLNAME ) )
             {
-                pRes = pRtl;
+                pRes = pRtl.get();
             }
         }
         if( !pRes )
         {
-            pRes = 
static_cast<SbiStdObject*>(static_cast<SbxObject*>(pRtl))->Find( rName, t );
+            pRes = static_cast<SbiStdObject*>(pRtl.get())->Find( rName, t );
         }
         if( pRes )
         {
@@ -2106,12 +2107,12 @@ void BasicCollection::Notify( SfxBroadcaster& rCst, 
const SfxHint& rHint )
             if( pVar->GetHashCode() == nAddHash
                   && aVarName.equalsIgnoreAsciiCase( pAddStr ) )
             {
-                pVar->SetInfo( xAddInfo );
+                pVar->SetInfo( xAddInfo.get() );
             }
             else if( pVar->GetHashCode() == nItemHash
                   && aVarName.equalsIgnoreAsciiCase( pItemStr ) )
             {
-                pVar->SetInfo( xItemInfo );
+                pVar->SetInfo( xItemInfo.get() );
             }
         }
     }
@@ -2219,7 +2220,7 @@ void BasicCollection::CollAdd( SbxArray* pPar_ )
             }
         }
         pNewItem->SetFlag( SbxFlagBits::ReadWrite );
-        xItemArray->Insert32( pNewItem, nNextIndex );
+        xItemArray->Insert32( pNewItem.get(), nNextIndex );
     }
     else
     {
diff --git a/basic/source/classes/sbunoobj.cxx 
b/basic/source/classes/sbunoobj.cxx
index 8d24420..561767a 100644
--- a/basic/source/classes/sbunoobj.cxx
+++ b/basic/source/classes/sbunoobj.cxx
@@ -473,7 +473,7 @@ static SbxObject* lcl_getNativeObject( sal_uInt32 nIndex )
         ObjectItem& rItem = rNativeObjectWrapperVector[ nIndex ];
         xRetObj = rItem.m_xNativeObj;
     }
-    return xRetObj;
+    return xRetObj.get();
 }
 
 // convert from Uno to Sbx
@@ -632,7 +632,7 @@ void unoToSbxValue( SbxVariable* pVar, const Any& aValue )
             }
             else
             {
-                pVar->PutObject( xWrapper );
+                pVar->PutObject( xWrapper.get() );
             }
         }
         break;
@@ -657,7 +657,7 @@ void unoToSbxValue( SbxVariable* pVar, const Any& aValue )
                         SbxDimArrayRef xArray = pArray;
                         SbxFlagBits nFlags = pVar->GetFlags();
                         pVar->ResetFlag( SbxFlagBits::Fixed );
-                        pVar->PutObject( static_cast<SbxDimArray*>(xArray) );
+                        pVar->PutObject( xArray.get() );
                         pVar->SetFlags( nFlags );
                     }
                     else
@@ -733,7 +733,7 @@ void unoToSbxValue( SbxVariable* pVar, const Any& aValue )
             }
             else
             {
-                pVar->PutObject( xWrapper );
+                pVar->PutObject( xWrapper.get() );
             }
         }
         break;
@@ -787,7 +787,7 @@ void unoToSbxValue( SbxVariable* pVar, const Any& aValue )
             // return the Array
             SbxFlagBits nFlags = pVar->GetFlags();
             pVar->ResetFlag( SbxFlagBits::Fixed );
-            pVar->PutObject( static_cast<SbxDimArray*>(xArray) );
+            pVar->PutObject( xArray.get() );
             pVar->SetFlags( nFlags );
 
         }
@@ -862,7 +862,7 @@ Type getUnoTypeForSbxValue( const SbxValue* pVal )
     if( eBaseType == SbxOBJECT )
     {
         SbxBaseRef xObj = pVal->GetObject();
-        if( !xObj )
+        if( !xObj.Is() )
         {
             aRetType = cppu::UnoType<XInterface>::get();
             return aRetType;
@@ -870,7 +870,7 @@ Type getUnoTypeForSbxValue( const SbxValue* pVal )
 
         if( nullptr != dynamic_cast<const SbxDimArray*>( &xObj) )
         {
-            SbxBase* pObj = static_cast<SbxBase*>(xObj);
+            SbxBase* pObj = xObj.get();
             SbxDimArray* pArray = static_cast<SbxDimArray*>(pObj);
 
             short nDims = pArray->GetDims();
@@ -964,12 +964,12 @@ Type getUnoTypeForSbxValue( const SbxValue* pVal )
         // No array, but ...
         else if( nullptr != dynamic_cast<const SbUnoObject*>( &xObj) )
         {
-            aRetType = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(xObj))->getUnoAny().getValueType();
+            aRetType = 
static_cast<SbUnoObject*>(xObj.get())->getUnoAny().getValueType();
         }
         // SbUnoAnyObject?
         else if( nullptr != dynamic_cast<const SbUnoAnyObject*>( &xObj) )
         {
-            aRetType = 
static_cast<SbUnoAnyObject*>(static_cast<SbxBase*>(xObj))->getValue().getValueType();
+            aRetType = 
static_cast<SbUnoAnyObject*>(xObj.get())->getValue().getValueType();
         }
         // Otherwise it is a No-Uno-Basic-Object -> default==deliver void
     }
@@ -991,11 +991,11 @@ Any sbxToUnoValueImpl( const SbxValue* pVar, bool 
bBlockConversionToSmallestType
         if( xObj.Is() )
         {
             if( nullptr != dynamic_cast<const SbUnoAnyObject*>( &xObj) )
-                return 
static_cast<SbUnoAnyObject*>(static_cast<SbxBase*>(xObj))->getValue();
+                return static_cast<SbUnoAnyObject*>(xObj.get())->getValue();
             if( nullptr != dynamic_cast<const SbClassModuleObject*>( &xObj) )
             {
                 Any aRetAny;
-                SbClassModuleObject* pClassModuleObj = 
static_cast<SbClassModuleObject*>(static_cast<SbxBase*>(xObj));
+                SbClassModuleObject* pClassModuleObj = 
static_cast<SbClassModuleObject*>(xObj.get());
                 SbModule* pClassModule = pClassModuleObj->getClassModule();
                 if( pClassModule->createCOMWrapperForIface( aRetAny, 
pClassModuleObj ) )
                     return aRetAny;
@@ -1191,7 +1191,7 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& 
rType, Property* pUnoProper
         SbxBaseRef xObj = pVar->GetObject();
         if( xObj.Is() && nullptr != dynamic_cast<const SbUnoAnyObject*>( 
&xObj) )
         {
-            return 
static_cast<SbUnoAnyObject*>(static_cast<SbxBase*>(xObj))->getValue();
+            return static_cast<SbUnoAnyObject*>(xObj.get())->getValue();
         }
     }
 
@@ -1244,13 +1244,13 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& 
rType, Property* pUnoProper
                 }
 
                 SbxBaseRef pObj = pVar->GetObject();
-                if( pObj && nullptr != dynamic_cast<const SbUnoObject*>( 
&pObj) )
+                if( pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( 
&pObj) )
                 {
-                    aRetVal = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj))->getUnoAny();
+                    aRetVal = 
static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
                 }
-                else if( pObj && nullptr != dynamic_cast<const 
SbUnoStructRefObject*>( &pObj) )
+                else if( pObj.Is() && nullptr != dynamic_cast<const 
SbUnoStructRefObject*>( &pObj) )
                 {
-                    aRetVal = 
static_cast<SbUnoStructRefObject*>(static_cast<SbxBase*>(pObj))->getUnoAny();
+                    aRetVal = 
static_cast<SbUnoStructRefObject*>(pObj.get())->getUnoAny();
                 }
                 else
                 {
@@ -1270,9 +1270,9 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& 
rType, Property* pUnoProper
                 Reference< XIdlClass > xIdlClass;
 
                 SbxBaseRef pObj = pVar->GetObject();
-                if( pObj && nullptr != dynamic_cast<const SbUnoObject*>( 
&pObj) )
+                if( pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( 
&pObj) )
                 {
-                    Any aUnoAny = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj))->getUnoAny();
+                    Any aUnoAny = static_cast<SbUnoObject*>( pObj.get() 
)->getUnoAny();
                     aUnoAny >>= xIdlClass;
                 }
 
@@ -1306,9 +1306,9 @@ Any sbxToUnoValue( const SbxValue* pVar, const Type& 
rType, Property* pUnoProper
         case TypeClass_SEQUENCE:
         {
             SbxBaseRef xObj = pVar->GetObject();
-            if( xObj && nullptr != dynamic_cast<const SbxDimArray*>( &xObj) )
+            if( xObj.Is() && nullptr != dynamic_cast<const SbxDimArray*>( 
&xObj) )
             {
-                SbxBase* pObj = static_cast<SbxBase*>(xObj);
+                SbxBase* pObj = xObj.get();
                 SbxDimArray* pArray = static_cast<SbxDimArray*>(pObj);
 
                 short nDims = pArray->GetDims();
@@ -2055,7 +2055,7 @@ void SbUnoObject::Notify( SfxBroadcaster& rBC, const 
SfxHint& rHint )
                                 {
                                     SbUnoStructRefObject* pSbUnoObject = new 
SbUnoStructRefObject( pProp->GetName(), aMember );
                                     SbxObjectRef xWrapper = 
static_cast<SbxObject*>(pSbUnoObject);
-                                    pVar->PutObject( xWrapper );
+                                    pVar->PutObject( xWrapper.get() );
                                 }
                                 else
                                 {
@@ -2532,7 +2532,7 @@ SbUnoMethod::~SbUnoMethod()
 
 SbxInfo* SbUnoMethod::GetInfo()
 {
-    if( !pInfo && m_xUnoMethod.is() )
+    if( !pInfo.Is() && m_xUnoMethod.is() )
     {
         SbiInstance* pInst = GetSbData()->pInst;
         if( pInst && pInst->IsCompatibility() )
@@ -2554,7 +2554,7 @@ SbxInfo* SbUnoMethod::GetInfo()
             }
         }
     }
-    return pInfo;
+    return pInfo.get();
 }
 
 const Sequence<ParamInfo>& SbUnoMethod::getParamInfos()
@@ -2589,7 +2589,7 @@ SbUnoProperty::SbUnoProperty
     // as needed establish an dummy array so that SbiRuntime::CheckArray() 
works
     static SbxArrayRef xDummyArray = new SbxArray( SbxVARIANT );
     if( eSbxType & SbxARRAY )
-        PutObject( xDummyArray );
+        PutObject( xDummyArray.get() );
 }
 
 SbUnoProperty::~SbUnoProperty()
@@ -2637,7 +2637,7 @@ SbxVariable* SbUnoObject::Find( const OUString& rName, 
SbxClassType t )
                 // create the property and superimpose it
                 auto pProp = tools::make_ref<SbUnoProperty>( rProp.Name, 
eSbxType, eRealSbxType, rProp, 0, false, ( rProp.Type.getTypeClass() ==  
css::uno::TypeClass_STRUCT  ) );
                 QuickInsert( pProp.get() );
-                pRes = pProp;
+                pRes = pProp.get();
             }
             else if( mxUnoAccess->hasMethod( aUName,
                 MethodConcept::ALL - MethodConcept::DANGEROUS ) )
@@ -2650,7 +2650,7 @@ SbxVariable* SbUnoObject::Find( const OUString& rName, 
SbxClassType t )
                 auto xMethRef = tools::make_ref<SbUnoMethod>( 
rxMethod->getName(),
                     unoToSbxType( rxMethod->getReturnType() ), rxMethod, false 
);
                 QuickInsert( xMethRef.get() );
-                pRes = xMethRef;
+                pRes = xMethRef.get();
             }
 
             // If nothing was found check via XNameAccess
@@ -2707,14 +2707,14 @@ SbxVariable* SbUnoObject::Find( const OUString& rName, 
SbxClassType t )
                     // create a property and superimpose it
                     auto xVarRef = tools::make_ref<SbUnoProperty>( aUName, 
SbxVARIANT, SbxVARIANT, aDummyProp, 0, true, false );
                     QuickInsert( xVarRef.get() );
-                    pRes = xVarRef;
+                    pRes = xVarRef.get();
                 }
                 else if( mxInvocation->hasMethod( aUName ) )
                 {
                     // create SbUnoMethode and superimpose it
                     auto xMethRef = tools::make_ref<SbUnoMethod>( aUName, 
SbxVARIANT, xDummyMethod, true );
                     QuickInsert( xMethRef.get() );
-                    pRes = xMethRef;
+                    pRes = xMethRef.get();
                 }
                 else
                 {
@@ -2723,7 +2723,7 @@ SbxVariable* SbUnoObject::Find( const OUString& rName, 
SbxClassType t )
                     {
                         auto xMethRef = tools::make_ref<SbUnoMethod>( aUName, 
SbxVARIANT, xDummyMethod, true );
                         QuickInsert( xMethRef.get() );
-                        pRes = xMethRef;
+                        pRes = xMethRef.get();
                     }
 
                 }
@@ -2941,7 +2941,7 @@ void RTL_Impl_CreateUnoStruct( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
 
     // try to create Struct with the same name
     SbUnoObjectRef xUnoObj = Impl_CreateUnoStruct( aClassName );
-    if( !xUnoObj )
+    if( !xUnoObj.Is() )
     {
         return;
     }
@@ -2985,7 +2985,7 @@ void RTL_Impl_CreateUnoService( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
         if( xUnoObj->getUnoAny().hasValue() )
         {
             // return the object
-            refVar->PutObject( static_cast<SbUnoObject*>(xUnoObj) );
+            refVar->PutObject( xUnoObj.get() );
         }
         else
         {
@@ -3037,7 +3037,7 @@ void RTL_Impl_CreateUnoServiceWithArguments( StarBASIC* 
pBasic, SbxArray& rPar,
         if( xUnoObj->getUnoAny().hasValue() )
         {
             // return the object
-            refVar->PutObject( static_cast<SbUnoObject*>(xUnoObj) );
+            refVar->PutObject( xUnoObj.get() );
         }
         else
         {
@@ -3062,7 +3062,7 @@ void RTL_Impl_GetProcessServiceManager( StarBASIC* 
pBasic, SbxArray& rPar, bool
 
     // Create a SbUnoObject out of it and return it
     SbUnoObjectRef xUnoObj = new SbUnoObject( OUString( 
"ProcessServiceManager" ), Any(xFactory) );
-    refVar->PutObject( static_cast<SbUnoObject*>(xUnoObj) );
+    refVar->PutObject( xUnoObj.get() );
 }
 
 void RTL_Impl_HasInterfaces( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
@@ -3084,11 +3084,11 @@ void RTL_Impl_HasInterfaces( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
 
     // get the Uno-Object
     SbxBaseRef pObj = rPar.Get( 1 )->GetObject();
-    if( !(pObj && nullptr != dynamic_cast<const SbUnoObject*>( &pObj)) )
+    if( !(pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( &pObj)) )
     {
         return;
     }
-    Any aAny = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj))->getUnoAny();
+    Any aAny = static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
     auto x = o3tl::tryAccess<Reference<XInterface>>(aAny);
     if( !x )
     {
@@ -3148,11 +3148,11 @@ void RTL_Impl_IsUnoStruct( StarBASIC* pBasic, SbxArray& 
rPar, bool bWrite )
         return;
     }
     SbxBaseRef pObj = rPar.Get( 1 )->GetObject();
-    if( !(pObj && nullptr != dynamic_cast<const SbUnoObject*>( &pObj)) )
+    if( !(pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( &pObj)) )
     {
         return;
     }
-    Any aAny = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj))->getUnoAny();
+    Any aAny = static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
     TypeClass eType = aAny.getValueType().getTypeClass();
     if( eType == TypeClass_STRUCT )
     {
@@ -3183,11 +3183,11 @@ void RTL_Impl_EqualUnoObjects( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
         return;
     }
     SbxBaseRef pObj1 = xParam1->GetObject();
-    if( !(pObj1 && nullptr != dynamic_cast<const SbUnoObject*>( &pObj1 )) )
+    if( !(pObj1.Is() && nullptr != dynamic_cast<const SbUnoObject*>( &pObj1 )) 
)
     {
         return;
     }
-    Any aAny1 = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj1))->getUnoAny();
+    Any aAny1 = static_cast<SbUnoObject*>(pObj1.get())->getUnoAny();
     TypeClass eType1 = aAny1.getValueType().getTypeClass();
     if( eType1 != TypeClass_INTERFACE )
     {
@@ -3202,11 +3202,11 @@ void RTL_Impl_EqualUnoObjects( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
         return;
     }
     SbxBaseRef pObj2 = xParam2->GetObject();
-    if( !(pObj2 && nullptr != dynamic_cast<const SbUnoObject*>( &pObj2 )) )
+    if( !(pObj2.Is() && nullptr != dynamic_cast<const SbUnoObject*>( &pObj2 )) 
)
     {
         return;
     }
-    Any aAny2 = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj2))->getUnoAny();
+    Any aAny2 = static_cast<SbUnoObject*>(pObj2.get())->getUnoAny();
     TypeClass eType2 = aAny2.getValueType().getTypeClass();
     if( eType2 != TypeClass_INTERFACE )
     {
@@ -3421,7 +3421,7 @@ SbxVariable* SbUnoClass::Find( const OUString& rName, 
SbxClassType )
                             {
                                 pRes = new SbxVariable( SbxVARIANT );
                                 SbxObjectRef xWrapper = 
static_cast<SbxObject*>(new SbUnoClass( aNewName, xClass ));
-                                pRes->PutObject( xWrapper );
+                                pRes->PutObject( xWrapper.get() );
                             }
                         }
                         else
@@ -3443,7 +3443,7 @@ SbxVariable* SbUnoClass::Find( const OUString& rName, 
SbxClassType )
                     {
                         pRes = new SbxVariable( SbxVARIANT );
                         SbxObjectRef xWrapper = 
static_cast<SbxObject*>(pNewClass);
-                        pRes->PutObject( xWrapper );
+                        pRes->PutObject( xWrapper.get() );
                     }
                 }
 
@@ -3455,7 +3455,7 @@ SbxVariable* SbUnoClass::Find( const OUString& rName, 
SbxClassType )
                     {
                         pRes = new SbxVariable( SbxVARIANT );
                         SbxObjectRef xWrapper = 
static_cast<SbxObject*>(pUnoService);
-                        pRes->PutObject( xWrapper );
+                        pRes->PutObject( xWrapper.get() );
                     }
                 }
 
@@ -3467,7 +3467,7 @@ SbxVariable* SbUnoClass::Find( const OUString& rName, 
SbxClassType )
                     {
                         pRes = new SbxVariable( SbxVARIANT );
                         SbxObjectRef xWrapper = 
static_cast<SbxObject*>(pUnoSingleton);
-                        pRes->PutObject( xWrapper );
+                        pRes->PutObject( xWrapper.get() );
                     }
                 }
             }
@@ -3546,7 +3546,7 @@ SbxVariable* SbUnoService::Find( const OUString& rName, 
SbxClassType )
                 {
                     // Create and insert SbUnoServiceCtor
                     SbxVariableRef xSbCtorRef = new SbUnoServiceCtor( aName, 
xCtor );
-                    QuickInsert( static_cast<SbxVariable*>(xSbCtorRef) );
+                    QuickInsert( xSbCtorRef.get() );
                 }
             }
             pRes = SbxObject::Find( rName, SbxClassType::Method );
@@ -3766,7 +3766,7 @@ SbUnoSingleton::SbUnoSingleton( const OUString& aName_ )
         : SbxObject( aName_ )
 {
     SbxVariableRef xGetMethodRef = new SbxMethod( OUString( "get"  ), 
SbxOBJECT );
-    QuickInsert( static_cast<SbxVariable*>(xGetMethodRef) );
+    QuickInsert( xGetMethodRef.get() );
 }
 
 void SbUnoSingleton::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
@@ -3861,7 +3861,7 @@ void BasicAllListener_Impl::firing_impl( const 
AllEventObject& Event, Any* pRet
         OUString aMethodName = aPrefixName;
         aMethodName = aMethodName + Event.MethodName;
 
-        SbxVariable * pP = xSbxObj;
+        SbxVariable * pP = xSbxObj.get();
         while( pP->GetParent() )
         {
             pP = pP->GetParent();
@@ -3876,11 +3876,11 @@ void BasicAllListener_Impl::firing_impl( const 
AllEventObject& Event, Any* pRet
                 {
                     // Convert elements
                     SbxVariableRef xVar = new SbxVariable( SbxVARIANT );
-                    unoToSbxValue( static_cast<SbxVariable*>(xVar), pArgs[i] );
-                    xSbxArray->Put( xVar, sal::static_int_cast< sal_uInt16 
>(i+1) );
+                    unoToSbxValue( xVar.get(), pArgs[i] );
+                    xSbxArray->Put( xVar.get(), sal::static_int_cast< 
sal_uInt16 >(i+1) );
                 }
 
-                pLib->Call( aMethodName, xSbxArray );
+                pLib->Call( aMethodName, xSbxArray.get() );
 
                 // get the return value from the Param-Array, if requested
                 if( pRet )
@@ -4138,7 +4138,7 @@ void SbRtl_CreateUnoListener( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
 
     // return the object
     SbxVariableRef refVar = rPar.Get(0);
-    refVar->PutObject( p->xSbxObj );
+    refVar->PutObject( p->xSbxObj.get() );
 }
 
 
@@ -4154,7 +4154,7 @@ void RTL_Impl_GetDefaultContext( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite
     Any aContextAny( comphelper::getProcessComponentContext() );
 
     SbUnoObjectRef xUnoObj = new SbUnoObject( OUString( "DefaultContext" ), 
aContextAny );
-    refVar->PutObject( static_cast<SbUnoObject*>(xUnoObj) );
+    refVar->PutObject( xUnoObj.get() );
 }
 
 
@@ -4192,9 +4192,9 @@ void RTL_Impl_CreateUnoValue( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
             Reference< XIdlClass > xIdlClass;
 
             SbxBaseRef pObj = pVal->GetObject();
-            if( pObj && nullptr != dynamic_cast<const SbUnoObject*>( &pObj) )
+            if( pObj.Is() && nullptr != dynamic_cast<const SbUnoObject*>( 
&pObj) )
             {
-                Any aUnoAny = 
static_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj))->getUnoAny();
+                Any aUnoAny = 
static_cast<SbUnoObject*>(pObj.get())->getUnoAny();
                 aUnoAny >>= xIdlClass;
             }
 
@@ -4210,7 +4210,7 @@ void RTL_Impl_CreateUnoValue( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
             Any aTypeAny( aType );
             SbxVariableRef refVar = rPar.Get(0);
             SbxObjectRef xUnoAnyObject = new SbUnoAnyObject( aTypeAny );
-            refVar->PutObject( xUnoAnyObject );
+            refVar->PutObject( xUnoAnyObject.get() );
         }
         return;
     }
@@ -4240,7 +4240,7 @@ void RTL_Impl_CreateUnoValue( StarBASIC* pBasic, 
SbxArray& rPar, bool bWrite )
 
     SbxVariableRef refVar = rPar.Get(0);
     SbxObjectRef xUnoAnyObject = new SbUnoAnyObject( aConvertedVal );
-    refVar->PutObject( xUnoAnyObject );
+    refVar->PutObject( xUnoAnyObject.get() );
 }
 
 
@@ -4318,13 +4318,13 @@ void SAL_CALL ModuleInvocationProxy::setValue(const 
OUString& rProperty, const A
     // Setup parameter
     SbxArrayRef xArray = new SbxArray;
     SbxVariableRef xVar = new SbxVariable( SbxVARIANT );
-    unoToSbxValue( static_cast<SbxVariable*>(xVar), rValue );
-    xArray->Put( xVar, 1 );
+    unoToSbxValue( xVar.get(), rValue );
+    xArray->Put( xVar.get(), 1 );
 
     // Call property method
     SbxVariableRef xValue = new SbxVariable;
-    pMeth->SetParameters( xArray );
-    pMeth->Call( xValue );
+    pMeth->SetParameters( xArray.get() );
+    pMeth->Call( xValue.get() );
     pMeth->SetParameters( nullptr );
 
     // TODO: OutParameter?
@@ -4356,8 +4356,8 @@ Any SAL_CALL ModuleInvocationProxy::getValue(const 
OUString& rProperty)
 
     // Call method
     SbxVariableRef xValue = new SbxVariable;
-    pMeth->Call( xValue );
-    Any aRet = sbxToUnoValue( xValue );
+    pMeth->Call( xValue.get() );
+    Any aRet = sbxToUnoValue( xValue.get() );
     return aRet;
 }
 
@@ -4421,17 +4421,17 @@ Any SAL_CALL ModuleInvocationProxy::invoke( const 
OUString& rFunction,
         for( sal_Int32 i = 0 ; i < nParamCount ; i++ )
         {
             SbxVariableRef xVar = new SbxVariable( SbxVARIANT );
-            unoToSbxValue( static_cast<SbxVariable*>(xVar), pArgs[i] );
-            xArray->Put( xVar, sal::static_int_cast< sal_uInt16 >(i+1) );
+            unoToSbxValue( xVar.get(), pArgs[i] );
+            xArray->Put( xVar.get(), sal::static_int_cast< sal_uInt16 >(i+1) );
         }
     }
 
     // Call method
     SbxVariableRef xValue = new SbxVariable;
     if( xArray.Is() )
-        pMeth->SetParameters( xArray );
-    pMeth->Call( xValue );
-    aRet = sbxToUnoValue( xValue );
+        pMeth->SetParameters( xArray.get() );
+    pMeth->Call( xValue.get() );
+    aRet = sbxToUnoValue( xValue.get() );
     pMeth->SetParameters( nullptr );
 
     if( bSetRescheduleBack )
@@ -4549,7 +4549,7 @@ void registerComponentToBeDisposedForBasic
 void registerComListenerVariableForBasic( SbxVariable* pVar, StarBASIC* pBasic 
)
 {
     StarBasicDisposeItem* pItem = lcl_getOrCreateItemForBasic( pBasic );
-    SbxArray* pArray = pItem->m_pRegisteredVariables;
+    SbxArray* pArray = pItem->m_pRegisteredVariables.get();
     pArray->Put( pVar, pArray->Count() );
 }
 
@@ -4560,7 +4560,7 @@ void disposeComVariablesForBasic( StarBASIC* pBasic )
     {
         StarBasicDisposeItem* pItem = *it;
 
-        SbxArray* pArray = pItem->m_pRegisteredVariables;
+        SbxArray* pArray = pItem->m_pRegisteredVariables.get();
         sal_uInt16 nCount = pArray->Count();
         for( sal_uInt16 i = 0 ; i < nCount ; ++i )
         {
@@ -4602,7 +4602,7 @@ bool SbModule::createCOMWrapperForIface( Any& o_rRetAny, 
SbClassModuleObject* pP
 
     bool bSuccess = false;
 
-    SbxArray* pModIfaces = pClassData->mxIfaces;
+    SbxArray* pModIfaces = pClassData->mxIfaces.get();
     sal_uInt16 nCount = pModIfaces->Count();
     for( sal_uInt16 i = 0 ; i < nCount ; ++i )
     {
@@ -4786,8 +4786,8 @@ SbxVariable* SbUnoStructRefObject::Find( const OUString& 
rName, SbxClassType t )
             aProp.Type = css::uno::Type( it->second->getTypeClass(), 
it->second->getTypeName() );
             SbUnoProperty* pProp = new SbUnoProperty( rName, eSbxType, 
eRealSbxType, aProp, 0, false, ( aProp.Type.getTypeClass() == 
css::uno::TypeClass_STRUCT) );
             SbxVariableRef xVarRef = pProp;
-            QuickInsert( static_cast<SbxVariable*>(xVarRef) );
-            pRes = xVarRef;
+            QuickInsert( xVarRef.get() );
+            pRes = xVarRef.get();
         }
     }
 
@@ -4815,15 +4815,15 @@ void SbUnoStructRefObject::implCreateDbgProperties()
 
     // Id == -1: display the implemented interfaces corresponding the 
ClassProvider
     SbxVariableRef xVarRef = new SbUnoProperty( 
OUString(ID_DBG_SUPPORTEDINTERFACES), SbxSTRING, SbxSTRING, aProp, -1, false, 
false );
-    QuickInsert( static_cast<SbxVariable*>(xVarRef) );
+    QuickInsert( xVarRef.get() );
 
     // Id == -2: output the properties
     xVarRef = new SbUnoProperty( OUString(ID_DBG_PROPERTIES), SbxSTRING, 
SbxSTRING, aProp, -2, false, false );
-    QuickInsert( static_cast<SbxVariable*>(xVarRef) );
+    QuickInsert( xVarRef.get() );
 
     // Id == -3: output the Methods
     xVarRef = new SbUnoProperty( OUString(ID_DBG_METHODS), SbxSTRING, 
SbxSTRING, aProp, -3, false, false );
-    QuickInsert( static_cast<SbxVariable*>(xVarRef) );
+    QuickInsert( xVarRef.get() );
 }
 
 void SbUnoStructRefObject::implCreateAll()
@@ -4846,7 +4846,7 @@ void SbUnoStructRefObject::implCreateAll()
         aProp.Type = css::uno::Type( it->second->getTypeClass(), 
it->second->getTypeName() );
         SbUnoProperty* pProp = new SbUnoProperty( rName, eSbxType, 
eRealSbxType, aProp, 0, false, ( aProp.Type.getTypeClass() == 
css::uno::TypeClass_STRUCT) );
         SbxVariableRef xVarRef = pProp;
-        QuickInsert( static_cast<SbxVariable*>(xVarRef) );
+        QuickInsert( xVarRef.get() );
     }
 
     // Create Dbg_-Properties
diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx
index 6388ef7..b7d9d59 100644
--- a/basic/source/classes/sbxmod.cxx
+++ b/basic/source/classes/sbxmod.cxx
@@ -228,7 +228,7 @@ DocObjectWrapper::invoke( const OUString& aFunctionName, 
const Sequence< Any >&
     if ( m_xAggInv.is() &&  m_xAggInv->hasMethod( aFunctionName ) )
             return m_xAggInv->invoke( aFunctionName, aParams, aOutParamIndex, 
aOutParam );
     SbMethodRef pMethod = getMethod( aFunctionName );
-    if ( !pMethod )
+    if ( !pMethod.Is() )
         throw RuntimeException();
     // check number of parameters
     sal_Int32 nParamsCount = aParams.getLength();
@@ -259,8 +259,8 @@ DocObjectWrapper::invoke( const OUString& aFunctionName, 
const Sequence< Any >&
         for ( sal_Int32 i = 0; i < nParamsCount; ++i )
         {
             SbxVariableRef xSbxVar = new SbxVariable( SbxVARIANT );
-            unoToSbxValue( static_cast< SbxVariable* >( xSbxVar ), pParams[i] 
);
-            xSbxParams->Put( xSbxVar, static_cast< sal_uInt16 >( i ) + 1 );
+            unoToSbxValue( xSbxVar.get(), pParams[i] );
+            xSbxParams->Put( xSbxVar.get(), static_cast< sal_uInt16 >( i ) + 1 
);
 
             // Enable passing by ref
             if ( xSbxVar->GetType() != SbxVARIANT )
@@ -268,12 +268,12 @@ DocObjectWrapper::invoke( const OUString& aFunctionName, 
const Sequence< Any >&
         }
     }
     if ( xSbxParams.Is() )
-        pMethod->SetParameters( xSbxParams );
+        pMethod->SetParameters( xSbxParams.get() );
 
     // call method
     SbxVariableRef xReturn = new SbxVariable;
 
-    pMethod->Call( xReturn );
+    pMethod->Call( xReturn.get() );
     Any aReturn;
     // get output parameters
     if ( xSbxParams.Is() )
@@ -291,7 +291,7 @@ DocObjectWrapper::invoke( const OUString& aFunctionName, 
const Sequence< Any >&
                     if ( pVar )
                     {
                         SbxVariableRef xVar = pVar;
-                        aOutParamMap.insert( OutParamMap::value_type( n - 1, 
sbxToUnoValue( xVar ) ) );
+                        aOutParamMap.insert( OutParamMap::value_type( n - 1, 
sbxToUnoValue( xVar.get() ) ) );
                     }
                 }
             }
@@ -309,7 +309,7 @@ DocObjectWrapper::invoke( const OUString& aFunctionName, 
const Sequence< Any >&
     }
 
     // get return value
-    aReturn = sbxToUnoValue( xReturn );
+    aReturn = sbxToUnoValue( xReturn.get() );
 
     pMethod->SetParameters( nullptr );
 
@@ -325,7 +325,7 @@ DocObjectWrapper::setValue( const OUString& aPropertyName, 
const Any& aValue ) t
     SbPropertyRef pProperty = getProperty( aPropertyName );
     if ( !pProperty.Is() )
        throw UnknownPropertyException();
-    unoToSbxValue( static_cast<SbxVariable*>(pProperty), aValue );
+    unoToSbxValue( pProperty.get(), aValue );
 }
 
 Any SAL_CALL
@@ -338,7 +338,7 @@ DocObjectWrapper::getValue( const OUString& aPropertyName ) 
throw (UnknownProper
     if ( !pProperty.Is() )
        throw UnknownPropertyException();
 
-    SbxVariable* pProp = static_cast<SbxVariable*>(pProperty);
+    SbxVariable* pProp = pProperty.get();
     if ( pProp->GetType() == SbxEMPTY )
         pProperty->Broadcast( SBX_HINT_DATAWANTED );
 
@@ -763,7 +763,7 @@ void SbModule::Notify( SfxBroadcaster& rBC, const SfxHint& 
rHint )
                             xMethParameters->Put( pPar, i );
                         }
 
-                        pMethVar->SetParameters( xMethParameters );
+                        pMethVar->SetParameters( xMethParameters.get() );
                         pMethVar->Get( aVals );
                         pMethVar->SetParameters( nullptr );
                     }
@@ -801,7 +801,7 @@ void SbModule::Notify( SfxBroadcaster& rBC, const SfxHint& 
rHint )
                     SbxArrayRef xArray = new SbxArray;
                     xArray->Put( pMethVar, 0 ); // Method as parameter 0
                     xArray->Put( pVar, 1 );
-                    pMethVar->SetParameters( xArray );
+                    pMethVar->SetParameters( xArray.get() );
 
                     SbxValues aVals;
                     pMethVar->Get( aVals );
@@ -1197,7 +1197,7 @@ void SbModule::Run( SbMethod* pMeth )
             {
                 // #57841 Clear Uno-Objects, which were helt in RTL functions,
                 // at the end of the program, so that nothing were helt.
-                ClearUnoObjectsInRTL_Impl( xBasic );
+                ClearUnoObjectsInRTL_Impl( xBasic.get() );
 
                 clearNativeObjectWrapperVector();
 
@@ -1242,7 +1242,7 @@ void SbModule::Run( SbMethod* pMeth )
     {
        // #57841 Clear Uno-Objects, which were helt in RTL functions,
        // the end of the program, so that nothing were helt.
-        ClearUnoObjectsInRTL_Impl( xBasic );
+        ClearUnoObjectsInRTL_Impl( xBasic.get() );
 
         delete GetSbData()->pInst;
         GetSbData()->pInst = nullptr;
@@ -1309,7 +1309,7 @@ void SbModule::RemoveVars()
     // which would cause basic to be re-run in the middle of the init ( and 
remember RemoveVars is called from compile and we don't want code to run as 
part of the compile )
     SbxVariableRef p = SbModule::Find( rModuleVariableName, 
SbxClassType::Property );
     if( p.Is() )
-        Remove (p);
+        Remove( p.get() );
     }
 }
 
@@ -1838,7 +1838,7 @@ void SbModule::LoadBinaryData( SvStream& rStrm )
 
 bool SbModule::LoadCompleted()
 {
-    SbxArray* p = GetMethods();
+    SbxArray* p = GetMethods().get();
     sal_uInt16 i;
     for( i = 0; i < p->Count(); i++ )
     {
@@ -1892,7 +1892,7 @@ void SbModule::handleProcedureProperties( SfxBroadcaster& 
rBC, const SfxHint& rH
                             xMethParameters->Put( pPar, i );
                         }
 
-                        pMeth->SetParameters( xMethParameters );
+                        pMeth->SetParameters( xMethParameters.get() );
                         pMeth->Get( aVals );
                         pMeth->SetParameters( nullptr );
                     }
@@ -1930,7 +1930,7 @@ void SbModule::handleProcedureProperties( SfxBroadcaster& 
rBC, const SfxHint& rH
                     SbxArrayRef xArray = new SbxArray;
                     xArray->Put( pMeth, 0 );    // Method as parameter 0
                     xArray->Put( pVar, 1 );
-                    pMeth->SetParameters( xArray );
+                    pMeth->SetParameters( xArray.get() );
 
                     SbxValues aVals;
                     pMeth->Get( aVals );
@@ -2015,7 +2015,7 @@ void SbMethod::ClearStatics()
 }
 SbxArray* SbMethod::GetStatics()
 {
-    return refStatics;
+    return refStatics.get();
 }
 
 bool SbMethod::LoadData( SvStream& rStrm, sal_uInt16 nVer )
@@ -2083,7 +2083,7 @@ void SbMethod::GetLineRange( sal_uInt16& l1, sal_uInt16& 
l2 )
 
 SbxInfo* SbMethod::GetInfo()
 {
-    return pInfo;
+    return pInfo.get();
 }
 
 // Interface to execute a method of the applications
@@ -2198,7 +2198,7 @@ SbObjModule::~SbObjModule()
 void
 SbObjModule::SetUnoObject( const uno::Any& aObj ) throw ( 
uno::RuntimeException, std::exception )
 {
-    SbUnoObject* pUnoObj = dynamic_cast<SbUnoObject*>( 
static_cast<SbxVariable*>(pDocObject) );
+    SbUnoObject* pUnoObj = dynamic_cast<SbUnoObject*>( pDocObject.get() );
     if ( pUnoObj && pUnoObj->getUnoAny() == aObj ) // object is equal, nothing 
to do
         return;
     pDocObject = new SbUnoObject( GetName(), aObj );
@@ -2217,13 +2217,13 @@ SbObjModule::SetUnoObject( const uno::Any& aObj ) throw 
( uno::RuntimeException,
 SbxVariable*
 SbObjModule::GetObject()
 {
-    return pDocObject;
+    return pDocObject.get();
 }
 SbxVariable*
 SbObjModule::Find( const OUString& rName, SbxClassType t )
 {
     SbxVariable* pVar = nullptr;
-    if ( pDocObject)
+    if ( pDocObject.get() )
         pVar = pDocObject->Find( rName, t );
     if ( !pVar )
         pVar = SbModule::Find( rName, t );
@@ -2489,14 +2489,14 @@ void SbUserFormModule::triggerMethod( const OUString& 
aMethodToRun, Sequence< An
             for ( sal_Int32 i = 0; i < aArguments.getLength(); ++i )
             {
                 auto xSbxVar = tools::make_ref<SbxVariable>( SbxVARIANT );
-                unoToSbxValue( static_cast< SbxVariable* >( xSbxVar ), 
aArguments[i] );
-                xArray->Put( xSbxVar, static_cast< sal_uInt16 >( i ) + 1 );
+                unoToSbxValue( xSbxVar.get(), aArguments[i] );
+                xArray->Put( xSbxVar.get(), static_cast< sal_uInt16 >( i ) + 1 
);
 
                 // Enable passing by ref
                 if ( xSbxVar->GetType() != SbxVARIANT )
                     xSbxVar->SetFlag( SbxFlagBits::Fixed );
             }
-            pMeth->SetParameters( xArray );
+            pMeth->SetParameters( xArray.get() );
 
             SbxValues aVals;
             pMeth->Get( aVals );
@@ -2585,7 +2585,7 @@ void SbUserFormModule::Load()
 {
     SAL_INFO("basic", "** load() ");
     // forces a load
-    if ( !pDocObject )
+    if ( !pDocObject.Is() )
         InitObject();
 }
 
@@ -2711,7 +2711,7 @@ void SbUserFormModule::InitObject()
 SbxVariable*
 SbUserFormModule::Find( const OUString& rName, SbxClassType t )
 {
-    if ( !pDocObject && !GetSbData()->bRunInit && GetSbData()->pInst )
+    if ( !pDocObject.Is() && !GetSbData()->bRunInit && GetSbData()->pInst )
         InitObject();
     return SbObjModule::Find( rName, t );
 }
diff --git a/basic/source/comp/codegen.cxx b/basic/source/comp/codegen.cxx
index 3ad73e0..c114d60 100644
--- a/basic/source/comp/codegen.cxx
+++ b/basic/source/comp/codegen.cxx
@@ -158,7 +158,7 @@ void SbiCodeGen::Save()
                 const OUString& rIfaceName = pParser->aIfaceVector[i];
                 SbxVariable* pIfaceVar = new SbxVariable( SbxVARIANT );
                 pIfaceVar->SetName( rIfaceName );
-                SbxArray* pIfaces = rMod.pClassData->mxIfaces;
+                SbxArray* pIfaces = rMod.pClassData->mxIfaces.get();
                 pIfaces->Insert( pIfaceVar, pIfaces->Count() );
             }
         }
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 5d0da42..335c99a 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -185,13 +185,13 @@ RTLFUNC(CreateObject)
 
     OUString aClass( rPar.Get( 1 )->GetOUString() );
     SbxObjectRef p = SbxBase::CreateObject( aClass );
-    if( !p )
+    if( !p.Is() )
         StarBASIC::Error( ERRCODE_BASIC_CANNOT_LOAD );
     else
     {
         // Convenience: enter BASIC as parent
         p->SetParent( pBasic );
-        rPar.Get( 0 )->PutObject( p );
+        rPar.Get( 0 )->PutObject( p.get() );
     }
 }
 
@@ -633,8 +633,8 @@ RTLFUNC(MkDir)
                 SbxArrayRef pPar = new SbxArray();
                 SbxVariableRef pResult = new SbxVariable();
                 SbxVariableRef pParam = new SbxVariable();
-                pPar->Insert( pResult, pPar->Count() );
-                pPar->Insert( pParam, pPar->Count() );
+                pPar->Insert( pResult.get(), pPar->Count() );
+                pPar->Insert( pParam.get(), pPar->Count() );
                 SbRtl_CurDir( pBasic, *pPar, bWrite );
 
                 rtl::OUString sCurPathURL;
@@ -1461,7 +1461,7 @@ RTLFUNC(RTL)
     (void)pBasic;
     (void)bWrite;
 
-    rPar.Get( 0 )->PutObject( pBasic->getRTL() );
+    rPar.Get( 0 )->PutObject( pBasic->getRTL().get() );
 }
 
 RTLFUNC(RTrim)
@@ -4474,8 +4474,8 @@ RTLFUNC(LoadPicture)
         Graphic aGraphic(aBmp);
 
         SbxObjectRef xRef = new SbStdPicture;
-        static_cast<SbStdPicture*>(static_cast<SbxObject*>(xRef))->SetGraphic( 
aGraphic );
-        rPar.Get(0)->PutObject( xRef );
+        static_cast<SbStdPicture*>(xRef.get())->SetGraphic( aGraphic );
+        rPar.Get(0)->PutObject( xRef.get() );
     }
 }
 
diff --git a/basic/source/runtime/methods1.cxx 
b/basic/source/runtime/methods1.cxx
index 8a385c2..836451d 100644
--- a/basic/source/runtime/methods1.cxx
+++ b/basic/source/runtime/methods1.cxx
@@ -215,8 +215,8 @@ RTLFUNC(CallByName)
             // Call method
             SbxVariableRef refVar = rPar.Get(0);
             if( xArray.Is() )
-                pMeth->SetParameters( xArray );
-            pMeth->Call( refVar );
+                pMeth->SetParameters( xArray.get() );
+            pMeth->Call( refVar.get() );
             pMeth->SetParameters( nullptr );
         }
         break;
diff --git a/basic/source/runtime/props.cxx b/basic/source/runtime/props.cxx
index 276bc42..ce99494 100644
--- a/basic/source/runtime/props.cxx
+++ b/basic/source/runtime/props.cxx
@@ -44,7 +44,7 @@ RTLFUNC(Err)
 
     if( SbiRuntime::isVBAEnabled() )
     {
-        rPar.Get( 0 )->PutObject( SbxErrObject::getErrObject() );
+        rPar.Get( 0 )->PutObject( SbxErrObject::getErrObject().get() );
     }
     else
     {
diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx
index 643c1a2..068858f 100644
--- a/basic/source/runtime/runtime.cxx
+++ b/basic/source/runtime/runtime.cxx
@@ -888,7 +888,7 @@ void SbiRuntime::Error( SbError n, bool 
bVBATranslationAlreadyDone )
         {
             OUString aMsg = pInst->GetErrorMsg();
             sal_Int32 nVBAErrorNumber = translateErrorToVba( nError, aMsg );
-            SbxVariable* pSbxErrObjVar = SbxErrObject::getErrObject();
+            SbxVariable* pSbxErrObjVar = SbxErrObject::getErrObject().get();
             SbxErrObject* pGlobErr = static_cast< SbxErrObject* >( 
pSbxErrObjVar );
             if( pGlobErr != nullptr )
             {
@@ -1324,13 +1324,13 @@ void SbiRuntime::StepCompare( SbxOperator eOp )
         // Compare )
         if ( p1Type ==  SbxOBJECT )
         {
-            SbxVariable* pDflt = getDefaultProp( p1 );
+            SbxVariable* pDflt = getDefaultProp( p1.get() );
             if ( pDflt )
             {
                 p1 = pDflt;
                 p1->Broadcast( SBX_HINT_DATAWANTED );
             }
-            pDflt = getDefaultProp( p2 );
+            pDflt = getDefaultProp( p2.get() );
             if ( pDflt )
             {
                 p2 = pDflt;
@@ -1604,7 +1604,7 @@ inline bool checkUnoStructCopy( bool bVBA, 
SbxVariableRef& refVal, SbxVariableRe
         return false;
 
     SbUnoObject* pUnoVal =  dynamic_cast<SbUnoObject*>( xValObj.get() );
-    SbUnoStructRefObject* pUnoStructVal = dynamic_cast<SbUnoStructRefObject*>( 
static_cast<SbxObject*>(xValObj) );
+    SbUnoStructRefObject* pUnoStructVal = dynamic_cast<SbUnoStructRefObject*>( 
xValObj.get() );
     Any aAny;
     // make doubly sure value is either an Uno object or
     // an uno struct
@@ -1683,7 +1683,7 @@ void SbiRuntime::StepPUT()
         {
             if  ( dynamic_cast<const SbxMethod *>(refVar.get()) != nullptr || 
! refVar->GetParent() )
             {
-                SbxVariable* pDflt = getDefaultProp( refVar );
+                SbxVariable* pDflt = getDefaultProp( refVar.get() );
 
                 if ( pDflt )
                     refVar = pDflt;
@@ -1693,7 +1693,7 @@ void SbiRuntime::StepPUT()
         }
         if (  refVal->GetType() == SbxOBJECT  && !bObjAssign && ( 
dynamic_cast<const SbxMethod *>(refVal.get()) != nullptr || ! 
refVal->GetParent() ) )
         {
-            SbxVariable* pDflt = getDefaultProp( refVal );
+            SbxVariable* pDflt = getDefaultProp( refVal.get() );
             if ( pDflt )
                 refVal = pDflt;
         }
@@ -1788,7 +1788,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, 
SbxVariableRef& refVar, b
         {
             SbxVariableRef refObjVal = dynamic_cast<SbxObject*>( pObjVarObj );
 
-            if( refObjVal )
+            if( refObjVal.Is() )
             {
                 refVal = refObjVal;
             }
@@ -1802,7 +1802,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, 
SbxVariableRef& refVar, b
     // #52896 refVal can be invalid here, if uno-sequences - or more
     // general arrays - are assigned to variables that are declared
     // as an object!
-    if( !refVal )
+    if( !refVal.Is() )
     {
         Error( ERRCODE_BASIC_INVALID_USAGE_OBJECT );
     }
@@ -1835,7 +1835,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, 
SbxVariableRef& refVar, b
             {
                 if ( dynamic_cast<const SbxMethod *>(refVar.get()) != nullptr 
|| ! refVar->GetParent() )
                 {
-                    SbxVariable* pDflt = getDefaultProp( refVar );
+                    SbxVariable* pDflt = getDefaultProp( refVar.get() );
                     if ( pDflt )
                     {
                         refVar = pDflt;
@@ -1849,10 +1849,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, 
SbxVariableRef& refVar, b
             {
                 // check if lhs is a null object
                 // if it is then use the object not the default property
-                SbxObject* pObj = nullptr;
-
-
-                pObj = dynamic_cast<SbxObject*>( refVar.get() );
+                SbxObject* pObj = dynamic_cast<SbxObject*>( refVar.get() );
 
                 // calling GetObject on a SbxEMPTY variable raises
                 // object not set errors, make sure it's an Object
@@ -1865,7 +1862,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, 
SbxVariableRef& refVar, b
                 if ( pObj && !bObjAssign )
                 {
                     // lhs is either a valid object || or has a defaultProp
-                    pDflt = getDefaultProp( refVal );
+                    pDflt = getDefaultProp( refVal.get() );
                 }
                 if ( pDflt )
                 {
@@ -1923,7 +1920,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, 
SbxVariableRef& refVar, b
                     {
                         // Object is overwritten with NULL, instantiate init 
object
                         DimAsNewRecoverHash &rDimAsNewRecoverHash = 
GaDimAsNewRecoverHash::get();
-                        DimAsNewRecoverHash::iterator it = 
rDimAsNewRecoverHash.find( refVar );
+                        DimAsNewRecoverHash::iterator it = 
rDimAsNewRecoverHash.find( refVar.get() );
                         if( it != rDimAsNewRecoverHash.end() )
                         {
                             const DimAsNewRecoverItem& rItem = it->second;
@@ -1961,12 +1958,12 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, 
SbxVariableRef& refVar, b
                             if( pClassModuleObj != nullptr )
                             {
                                 SbModule* pClassModule = 
pClassModuleObj->getClassModule();
-                                rDimAsNewRecoverHash[refVar] =
+                                rDimAsNewRecoverHash[refVar.get()] =
                                     DimAsNewRecoverItem( aObjClass, 
pValObj->GetName(), pValObj->GetParent(), pClassModule );
                             }
                             else if( aObjClass.equalsIgnoreAsciiCase( 
"Collection" ) )
                             {
-                                rDimAsNewRecoverHash[refVar] =
+                                rDimAsNewRecoverHash[refVar.get()] =
                                     DimAsNewRecoverItem( aObjClass, 
pValObj->GetName(), pValObj->GetParent(), nullptr );
                             }
                         }
@@ -2099,9 +2096,9 @@ void SbiRuntime::DimImpl( SbxVariableRef refVar )
     // If refDim then this DIM statement is terminating a ReDIM and
     // previous StepERASE_CLEAR for an array, the following actions have
     // been delayed from ( StepERASE_CLEAR ) 'till here
-    if ( refRedim )
+    if ( refRedim.Is() )
     {
-        if ( !refRedimpArray ) // only erase the array not ReDim Preserve
+        if ( !refRedimpArray.Is() ) // only erase the array not ReDim Preserve
         {
             lcl_eraseImpl( refVar, bVBAEnabled );
         }
@@ -2205,7 +2202,7 @@ void SbiRuntime::StepREDIMP()
     {
         SbxBase* pElemObj = refVar->GetObject();
         SbxDimArray* pNewArray = dynamic_cast<SbxDimArray*>( pElemObj );
-        SbxDimArray* pOldArray = 
static_cast<SbxDimArray*>(static_cast<SbxArray*>(refRedimpArray));
+        SbxDimArray* pOldArray = 
static_cast<SbxDimArray*>(refRedimpArray.get());
         if( pNewArray )
         {
             short nDimsNew = pNewArray->GetDims();
@@ -2355,14 +2352,14 @@ void SbiRuntime::StepERASE_CLEAR()
 
 void SbiRuntime::StepARRAYACCESS()
 {
-    if( !refArgv )
+    if( !refArgv.Is() )
     {
         StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
     }
     SbxVariableRef refVar = PopVar();
-    refVar->SetParameters( refArgv );
+    refVar->SetParameters( refArgv.get() );
     PopArgv();
-    PushVar( CheckArray( refVar ) );
+    PushVar( CheckArray( refVar.get() ) );
 }
 
 void SbiRuntime::StepBYVAL()
@@ -2392,7 +2389,7 @@ void SbiRuntime::StepARGC()
 
 void SbiRuntime::StepARGV()
 {
-    if( !refArgv )
+    if( !refArgv.Is() )
     {
         StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
     }
@@ -2409,7 +2406,7 @@ void SbiRuntime::StepARGV()
             SbxVariable* pRes = new SbxVariable( *pVal );
             pVal = pRes;
         }
-        refArgv->Put( pVal, nArgc++ );
+        refArgv->Put( pVal.get(), nArgc++ );
     }
 }
 
@@ -2580,14 +2577,14 @@ void SbiRuntime::StepCASE()
         refCaseStk = new SbxArray;
     }
     SbxVariableRef xVar = PopVar();
-    refCaseStk->Put( xVar, refCaseStk->Count() );
+    refCaseStk->Put( xVar.get(), refCaseStk->Count() );
 }
 
 // end CASE: free variable
 
 void SbiRuntime::StepENDCASE()
 {
-    if( !refCaseStk || !refCaseStk->Count() )
+    if( !refCaseStk.Is() || !refCaseStk->Count() )
     {
         StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
     }
@@ -2742,7 +2739,7 @@ void SbiRuntime::StepEMPTY()
     // to simplify matters.
     SbxVariableRef xVar = new SbxVariable( SbxVARIANT );
     xVar->PutErr( 448 );
-    PushVar( xVar );
+    PushVar( xVar.get() );
 }
 
 // TOS = error code
@@ -2804,7 +2801,7 @@ void SbiRuntime::StepLOADI( sal_uInt32 nOp1 )
 
 void SbiRuntime::StepARGN( sal_uInt32 nOp1 )
 {
-    if( !refArgv )
+    if( !refArgv.Is() )
         StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
     else
     {
@@ -2819,7 +2816,7 @@ void SbiRuntime::StepARGN( sal_uInt32 nOp1 )
             SbxVariable* pRes = new SbxVariable( *pVal );
             pVal = pRes;
         }
-        refArgv->Put( pVal, nArgc );
+        refArgv->Put( pVal.get(), nArgc );
         refArgv->PutAlias( aAlias, nArgc++ );
     }
 }
@@ -2828,7 +2825,7 @@ void SbiRuntime::StepARGN( sal_uInt32 nOp1 )
 
 void SbiRuntime::StepARGTYP( sal_uInt32 nOp1 )
 {
-    if( !refArgv )
+    if( !refArgv.Is() )
         StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
     else
     {
@@ -2995,7 +2992,7 @@ void SbiRuntime::StepTESTFOR( sal_uInt32 nOp1 )
             }
             else
             {
-                SbxDimArray* pArray = 
reinterpret_cast<SbxDimArray*>(static_cast<SbxVariable*>(p->refEnd));
+                SbxDimArray* pArray = 
reinterpret_cast<SbxDimArray*>(p->refEnd.get());
                 short nDims = pArray->GetDims();
 
                 // Empty array?
@@ -3029,7 +3026,7 @@ void SbiRuntime::StepTESTFOR( sal_uInt32 nOp1 )
         }
         case ForType::EachCollection:
         {
-            BasicCollection* pCollection = 
static_cast<BasicCollection*>(static_cast<SbxVariable*>(pForStk->refEnd));
+            BasicCollection* pCollection = 
static_cast<BasicCollection*>(pForStk->refEnd.get());
             SbxArrayRef xItemArray = pCollection->xItemArray;
             sal_Int32 nCount = xItemArray->Count32();
             if( pForStk->nCurCollectionIndex < nCount )
@@ -3072,7 +3069,7 @@ void SbiRuntime::StepTESTFOR( sal_uInt32 nOp1 )
 
 void SbiRuntime::StepCASETO( sal_uInt32 nOp1 )
 {
-    if( !refCaseStk || !refCaseStk->Count() )
+    if( !refCaseStk.Is() || !refCaseStk->Count() )
         StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
     else
     {
@@ -3300,7 +3297,7 @@ void SbiRuntime::StepBASED( sal_uInt32 nOp1 )
     p1->PutInteger( uBase );
     if( !bCompatible )
         x2->Compute( SbxPLUS, *p1 );
-    PushVar( x2 );  // first the Expr
+    PushVar( x2.get() );  // first the Expr
     PushVar( p1 );  // then the Base
 }
 
@@ -3465,7 +3462,7 @@ SbxVariable* SbiRuntime::FindElement( SbxObject* pObj, 
sal_uInt32 nOp1, sal_uInt
                     {
                         xDummyVar = new SbxVariable( SbxVARIANT );
                     }
-                    pElem = xDummyVar;
+                    pElem = xDummyVar.get();
 
                     ClearArgvStack();
 
@@ -3564,7 +3561,7 @@ SbxBase* SbiRuntime::FindElementExtern( const OUString& 
rName )
     {
         return nullptr;
     }
-    if( refLocals )
+    if( refLocals.Is() )
     {
         pElem = refLocals->Find( rName, SbxClassType::DontCare );
     }
@@ -3579,7 +3576,7 @@ SbxBase* SbiRuntime::FindElementExtern( const OUString& 
rName )
     if( !pElem && pMeth )
     {
         SbxInfo* pInfo = pMeth->GetInfo();
-        if( pInfo && refParams )
+        if( pInfo && refParams.Is() )
         {
             sal_uInt16 nParamCount = refParams->Count();
             sal_uInt16 j = 1;
@@ -3621,7 +3618,7 @@ void SbiRuntime::SetupArgs( SbxVariable* p, sal_uInt32 
nOp1 )
 {
     if( nOp1 & 0x8000 )
     {
-        if( !refArgv )
+        if( !refArgv.Is() )
         {
             StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
         }
@@ -3745,7 +3742,7 @@ void SbiRuntime::SetupArgs( SbxVariable* p, sal_uInt32 
nOp1 )
         }
         // own var as parameter 0
         refArgv->Put( p, 0 );
-        p->SetParameters( refArgv );
+        p->SetParameters( refArgv.get() );
         PopArgv();
     }
     else
@@ -3804,9 +3801,9 @@ SbxVariable* SbiRuntime::CheckArray( SbxVariable* pElem )
         {
             // is it an uno-object?
             SbxBaseRef pObj = pElem->GetObject();
-            if( pObj )
+            if( pObj.Is() )
             {
-                if (SbUnoObject* pUnoObj = 
dynamic_cast<SbUnoObject*>(static_cast<SbxBase*>(pObj)))
+                if (SbUnoObject* pUnoObj = dynamic_cast<SbUnoObject*>( 
pObj.get()))
                 {
                     Any aAny = pUnoObj->getUnoAny();
 
@@ -3848,7 +3845,7 @@ SbxVariable* SbiRuntime::CheckArray( SbxVariable* pElem )
                                     // #67173 don't specify a name so that the 
real class name is entered
                                     OUString aName;
                                     SbxObjectRef xWrapper = 
static_cast<SbxObject*>(new SbUnoObject( aName, aAny ));
-                                    pElem->PutObject( xWrapper );
+                                    pElem->PutObject( xWrapper.get() );
                                 }
                                 else
                                 {
@@ -3870,9 +3867,9 @@ SbxVariable* SbiRuntime::CheckArray( SbxVariable* pElem )
                             {
                                 pDflt->Broadcast( SBX_HINT_DATAWANTED );
                                 SbxBaseRef pDfltObj = pDflt->GetObject();
-                                if( pDfltObj )
+                                if( pDfltObj.Is() )
                                 {
-                                    if (SbUnoObject* pSbObj = 
dynamic_cast<SbUnoObject*>(static_cast<SbxBase*>(pDfltObj)))
+                                    if (SbUnoObject* pSbObj = 
dynamic_cast<SbUnoObject*>(pDfltObj.get()))
                                     {
                                         pUnoObj = pSbObj;
                                         Any aUnoAny = pUnoObj->getUnoAny();
@@ -3899,7 +3896,7 @@ SbxVariable* SbiRuntime::CheckArray( SbxVariable* pElem )
                             {
                                 SbxVariable* meth = pUnoObj->Find( 
sDefaultMethod, SbxClassType::Method );
                                 SbxVariableRef refTemp = meth;
-                                if ( refTemp )
+                                if ( refTemp.Is() )
                                 {
                                     meth->SetParameters( pPar );
                                     SbxVariable* pNew = new SbxMethod( 
*static_cast<SbxMethod*>(meth) );
@@ -3912,7 +3909,7 @@ SbxVariable* SbiRuntime::CheckArray( SbxVariable* pElem )
                     // #42940, set parameter 0 to NULL so that var doesn't 
contain itself
                     pPar->Put( nullptr, 0 );
                 }
-                else if (BasicCollection* pCol = 
dynamic_cast<BasicCollection*>(static_cast<SbxBase*>(pObj)))
+                else if (BasicCollection* pCol = 
dynamic_cast<BasicCollection*>(pObj.get()))
                 {
                     pElem = new SbxVariable( SbxVARIANT );
                     pPar->Put( pElem, 0 );
@@ -3937,13 +3934,13 @@ SbxVariable* SbiRuntime::CheckArray( SbxVariable* pElem 
)
 
 void SbiRuntime::StepRTL( sal_uInt32 nOp1, sal_uInt32 nOp2 )
 {
-    PushVar( FindElement( rBasic.pRtl, nOp1, nOp2, 
ERRCODE_BASIC_PROC_UNDEFINED, false ) );
+    PushVar( FindElement( rBasic.pRtl.get(), nOp1, nOp2, 
ERRCODE_BASIC_PROC_UNDEFINED, false ) );
 }
 
 void SbiRuntime::StepFIND_Impl( SbxObject* pObj, sal_uInt32 nOp1, sal_uInt32 
nOp2,
                                 SbError nNotFound, bool bStatic )
 {
-    if( !refLocals )
+    if( !refLocals.Is() )
     {
         refLocals = new SbxArray;
     }
@@ -4094,7 +4091,7 @@ void SbiRuntime::StepPARAM( sal_uInt32 nOp1, sal_uInt32 
nOp2 )
 
 void SbiRuntime::StepCASEIS( sal_uInt32 nOp1, sal_uInt32 nOp2 )
 {
-    if( !refCaseStk || !refCaseStk->Count() )
+    if( !refCaseStk.Is() || !refCaseStk->Count() )
     {
         StarBASIC::FatalError( ERRCODE_BASIC_INTERNAL_ERROR );
     }
@@ -4118,7 +4115,7 @@ void SbiRuntime::StepCALL( sal_uInt32 nOp1, sal_uInt32 
nOp2 )
     SbxArray* pArgs = nullptr;
     if( nOp1 & 0x8000 )
     {
-        pArgs = refArgv;
+        pArgs = refArgv.get();
     }
     DllCall( aName, aLibName, pArgs, (SbxDataType) nOp2, false );
     aLibName.clear();
@@ -4136,7 +4133,7 @@ void SbiRuntime::StepCALLC( sal_uInt32 nOp1, sal_uInt32 
nOp2 )
     SbxArray* pArgs = nullptr;
     if( nOp1 & 0x8000 )
     {
-        pArgs = refArgv;
+        pArgs = refArgv.get();
     }
     DllCall( aName, aLibName, pArgs, (SbxDataType) nOp2, true );
     aLibName.clear();
@@ -4323,13 +4320,13 @@ void SbiRuntime::StepDCREATE_IMPL( sal_uInt32 nOp1, 
sal_uInt32 nOp2 )
 
     // fill the array with instances of the requested class
     SbxBaseRef xObj = refVar->GetObject();
-    if( !xObj )
+    if( !xObj.Is() )
     {
         StarBASIC::Error( ERRCODE_BASIC_INVALID_OBJECT );
         return;
     }
 
-    SbxDimArray* pArray = 
dynamic_cast<SbxDimArray*>(static_cast<SbxBase*>(xObj));
+    SbxDimArray* pArray = dynamic_cast<SbxDimArray*>(xObj.get());
     if (pArray)
     {
         short nDims = pArray->GetDims();
@@ -4373,7 +4370,7 @@ void SbiRuntime::StepDCREATE_IMPL( sal_uInt32 nOp1, 
sal_uInt32 nOp2 )
         }
     }
 
-    SbxDimArray* pOldArray = 
static_cast<SbxDimArray*>(static_cast<SbxArray*>(refRedimpArray));
+    SbxDimArray* pOldArray = static_cast<SbxDimArray*>(refRedimpArray.get());
     if( pArray && pOldArray )
     {
         short nDimsNew = pArray->GetDims();
@@ -4497,7 +4494,7 @@ void SbiRuntime::StepPUBLIC_Impl( sal_uInt32 nOp1, 
sal_uInt32 nOp2, bool bUsedFo
     SbxVariableRef p = pMod->Find( aName, SbxClassType::Property );
     if( p.Is() )
     {
-        pMod->Remove (p);
+        pMod->Remove (p.get());
     }
     SbProperty* pProp = pMod->GetProperty( aName, t );
     if( !bUsedForClassModule )
@@ -4560,14 +4557,14 @@ void SbiRuntime::StepGLOBAL( sal_uInt32 nOp1, 
sal_uInt32 nOp2 )
     SbxVariableRef p = pStorage->Find( aName, SbxClassType::Property );
     if( p.Is() )
     {
-        pStorage->Remove (p);
+        pStorage->Remove (p.get());
     }
     p = pStorage->Make( aName, SbxClassType::Property, t );
     if( !bFlag )
     {
         pStorage->ResetFlag( SbxFlagBits::NoModify );
     }
-    if( p )
+    if( p.Is() )
     {
         p->SetFlag( SbxFlagBits::DontStore );
         // from 2.7.1996: HACK because of 'reference can't be saved'
diff --git a/basic/source/sbx/sbxarray.cxx b/basic/source/sbx/sbxarray.cxx
index 8748d2d..e96ac1a 100644
--- a/basic/source/sbx/sbxarray.cxx
+++ b/basic/source/sbx/sbxarray.cxx
@@ -61,7 +61,7 @@ SbxArray& SbxArray::operator=( const SbxArray& rArray )
         for( const auto& rpSrcRef : rArray.mVarEntries )
         {
             SbxVariableRef pSrc_ = rpSrcRef.mpVar;
-            if( !pSrc_ )
+            if( !pSrc_.Is() )
                 continue;
 
             if( eType != SbxVARIANT )
@@ -153,7 +153,7 @@ SbxVariable* SbxArray::Get32( sal_uInt32 nIdx )
     if ( !rRef.Is() )
         rRef = new SbxVariable( eType );
 
-    return rRef;
+    return rRef.get();
 }
 
 SbxVariable* SbxArray::Get( sal_uInt16 nIdx )
@@ -168,7 +168,7 @@ SbxVariable* SbxArray::Get( sal_uInt16 nIdx )
     if ( !rRef.Is() )
         rRef = new SbxVariable( eType );
 
-    return rRef;
+    return rRef.get();
 }
 
 void SbxArray::Put32( SbxVariable* pVar, sal_uInt32 nIdx )
@@ -183,7 +183,7 @@ void SbxArray::Put32( SbxVariable* pVar, sal_uInt32 nIdx )
                 if( eType != SbxOBJECT || pVar->GetClass() != 
SbxClassType::Object )
                     pVar->Convert( eType );
         SbxVariableRef& rRef = GetRef32( nIdx );
-        if( static_cast<SbxVariable*>(rRef) != pVar )
+        if( rRef.get() != pVar )
         {
             rRef = pVar;
             SetFlag( SbxFlagBits::Modified );
@@ -311,7 +311,7 @@ void SbxArray::Merge( SbxArray* p )
 
     for (auto& rEntry1: p->mVarEntries)
     {
-        if (!rEntry1.mpVar)
+        if (!rEntry1.mpVar.Is())
             continue;
 
         OUString aName = rEntry1.mpVar->GetName();
@@ -321,7 +321,7 @@ void SbxArray::Merge( SbxArray* p )
         // Then overwrite!
         for (auto& rEntry2: mVarEntries)
         {
-            if (!rEntry2.mpVar)
+            if (!rEntry2.mpVar.Is())
                 continue;
 
             if (rEntry2.mpVar->GetHashCode() == nHash &&
@@ -334,7 +334,7 @@ void SbxArray::Merge( SbxArray* p )
             }
         }
 
-        if (rEntry1.mpVar)
+        if (rEntry1.mpVar.Is())
         {
             // We don't have element with the same name.  Add a new entry.
             SbxVarEntry aNewEntry;
@@ -354,7 +354,7 @@ SbxVariable* SbxArray::FindUserData( sal_uInt32 nData )
     SbxVariable* p = nullptr;
     for (auto& rEntry : mVarEntries)
     {
-        if (!rEntry.mpVar)
+        if (!rEntry.mpVar.Is())
             continue;
 
         if (rEntry.mpVar->IsVisible() && rEntry.mpVar->GetUserData() == nData)
@@ -408,7 +408,7 @@ SbxVariable* SbxArray::Find( const OUString& rName, 
SbxClassType t )
     sal_uInt16 nHash = SbxVariable::MakeHashCode( rName );
     for (auto& rEntry : mVarEntries)
     {
-        if (!rEntry.mpVar || !rEntry.mpVar->IsVisible())
+        if (!rEntry.mpVar.Is() || !rEntry.mpVar->IsVisible())
             continue;
 
         // The very secure search works as well, if there is no hashcode!
@@ -489,14 +489,14 @@ bool SbxArray::StoreData( SvStream& rStrm ) const
     // Which elements are even defined?
     for( auto& rEntry: mVarEntries )
     {
-        if (rEntry.mpVar && !(rEntry.mpVar->GetFlags() & 
SbxFlagBits::DontStore))
+        if (rEntry.mpVar.Is() && !(rEntry.mpVar->GetFlags() & 
SbxFlagBits::DontStore))
             nElem++;
     }
     rStrm.WriteUInt16( nElem );
     for( size_t n = 0; n < mVarEntries.size(); n++ )
     {
         const SbxVarEntry& rEntry = mVarEntries[n];
-        if (rEntry.mpVar && !(rEntry.mpVar->GetFlags() & 
SbxFlagBits::DontStore))
+        if (rEntry.mpVar.Is() && !(rEntry.mpVar->GetFlags() & 
SbxFlagBits::DontStore))
         {
             rStrm.WriteUInt16( n );
             if (!rEntry.mpVar->Store(rStrm))
diff --git a/basic/source/sbx/sbxexec.cxx b/basic/source/sbx/sbxexec.cxx
index 9507f47..47775b0 100644
--- a/basic/source/sbx/sbxexec.cxx
+++ b/basic/source/sbx/sbxexec.cxx
@@ -94,7 +94,7 @@ static SbxVariableRef QualifiedName
         {
             // It follows still an objectelement. The current element
             // had to be a SBX-Object or had to deliver such an object!
-            pObj = dynamic_cast<SbxObject*>( static_cast<SbxVariable*>(refVar) 
);
+            pObj = dynamic_cast<SbxObject*>( refVar.get() );
             if( !pObj )
                 // Then it had to deliver an object
                 pObj = dynamic_cast<SbxObject*>( refVar->GetObject() );
@@ -183,7 +183,7 @@ static SbxVariableRef MulDiv( SbxObject* pObj, SbxObject* 
pGbl, const sal_Unicod
         if( refVar2.Is() )
         {
             // temporary variable!
-            SbxVariable* pVar = refVar;
+            SbxVariable* pVar = refVar.get();
             pVar = new SbxVariable( *pVar );
             refVar = pVar;
             if( cOp == '*' )
@@ -213,7 +213,7 @@ static SbxVariableRef PlusMinus( SbxObject* pObj, 
SbxObject* pGbl, const sal_Uni
         if( refVar2.Is() )
         {
             // temporaere Variable!
-            SbxVariable* pVar = refVar;
+            SbxVariable* pVar = refVar.get();
             pVar = new SbxVariable( *pVar );
             refVar = pVar;
             if( cOp == '+' )
@@ -252,8 +252,8 @@ static SbxVariableRef Assign( SbxObject* pObj, SbxObject* 
pGbl, const sal_Unicod
                 SbxVariableRef refVar2( PlusMinus( pObj, pGbl, &p ) );
                 if( refVar2.Is() )
                 {
-                    SbxVariable* pVar = refVar;
-                    SbxVariable* pVar2 = refVar2;
+                    SbxVariable* pVar = refVar.get();
+                    SbxVariable* pVar2 = refVar2.get();
                     *pVar = *pVar2;
                     pVar->SetParameters( nullptr );
                 }
@@ -303,7 +303,7 @@ static SbxVariableRef Element
                 while( *p && *p != ')' && *p != ']' )
                 {
                     SbxVariableRef refArg = PlusMinus( pGbl, pGbl, &p );
-                    if( !refArg )
+                    if( !refArg.Is() )
                     {
                         // Error during the parsing
                         refVar.Clear(); break;
@@ -322,7 +322,7 @@ static SbxVariableRef Element
                 if( *p == ')' )
                     p++;
                 if( refVar.Is() )
-                    refVar->SetParameters( refPar );
+                    refVar->SetParameters( refPar.get() );
             }
         }
         else
@@ -336,7 +336,7 @@ static SbxVariableRef Element
 
 SbxVariable* SbxObject::Execute( const OUString& rTxt )
 {
-    SbxVariable* pVar = nullptr;
+    SbxVariableRef pVar = nullptr;
     const sal_Unicode* p = rTxt.getStr();
     for( ;; )
     {
@@ -350,7 +350,7 @@ SbxVariable* SbxObject::Execute( const OUString& rTxt )
             SetError( ERRCODE_SBX_SYNTAX ); break;
         }
         pVar = Assign( this, this, &p );
-        if( !pVar )
+        if( !pVar.Is() )
         {
             break;
         }
@@ -360,12 +360,12 @@ SbxVariable* SbxObject::Execute( const OUString& rTxt )
             SetError( ERRCODE_SBX_SYNTAX ); break;
         }
     }
-    return pVar;
+    return pVar.get();
 }
 
 SbxVariable* SbxObject::FindQualified( const OUString& rName, SbxClassType t )
 {
-    SbxVariable* pVar = nullptr;
+    SbxVariableRef pVar = nullptr;
     const sal_Unicode* p = rName.getStr();
     p = SkipWhitespace( p );
     if( !*p )
@@ -378,7 +378,7 @@ SbxVariable* SbxObject::FindQualified( const OUString& 
rName, SbxClassType t )
     {
         SetError( ERRCODE_SBX_SYNTAX );
     }
-    return pVar;
+    return pVar.get();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basic/source/sbx/sbxobj.cxx b/basic/source/sbx/sbxobj.cxx
index 5382b49..e4e7e38 100644
--- a/basic/source/sbx/sbxobj.cxx
+++ b/basic/source/sbx/sbxobj.cxx
@@ -98,9 +98,9 @@ static void CheckParentsOnDelete( SbxObject* pObj, SbxArray* 
p )
 
 SbxObject::~SbxObject()
 {
-    CheckParentsOnDelete( this, pProps );
-    CheckParentsOnDelete( this, pMethods );
-    CheckParentsOnDelete( this, pObjs );
+    CheckParentsOnDelete( this, pProps.get() );
+    CheckParentsOnDelete( this, pMethods.get() );
+    CheckParentsOnDelete( this, pObjs.get() );
 
     // avoid handling in ~SbxVariable as SbxFlagBits::DimAsNew == 
SbxFlagBits::GlobalSearch
     ResetFlag( SbxFlagBits::DimAsNew );
@@ -239,9 +239,9 @@ SbxVariable* SbxObject::Find( const OUString& rName, 
SbxClassType t )
         switch( t )
         {
         case SbxClassType::Variable:
-        case SbxClassType::Property: pArray = pProps;    break;
-        case SbxClassType::Method:   pArray = pMethods;  break;
-        case SbxClassType::Object:   pArray = pObjs;     break;
+        case SbxClassType::Property: pArray = pProps.get();    break;
+        case SbxClassType::Method:   pArray = pMethods.get();  break;
+        case SbxClassType::Object:   pArray = pObjs.get();     break;
         default: SAL_WARN( "basic", "Invalid SBX-Class" ); break;
         }
         if( pArray )
@@ -332,13 +332,16 @@ void SbxObject::SetDfltProperty( const OUString& rName )
 SbxArray* SbxObject::FindVar( SbxVariable* pVar, sal_uInt16& nArrayIdx )
 {
     SbxArray* pArray = nullptr;
-    if( pVar ) switch( pVar->GetClass() )
+    if( pVar )
     {
-    case SbxClassType::Variable:
-    case SbxClassType::Property: pArray = pProps;    break;
-    case SbxClassType::Method:   pArray = pMethods;  break;
-    case SbxClassType::Object:   pArray = pObjs;     break;
-    default: SAL_WARN( "basic", "Invalid SBX-Class" ); break;
+        switch( pVar->GetClass() )
+        {
+        case SbxClassType::Variable:
+        case SbxClassType::Property: pArray = pProps.get();    break;
+        case SbxClassType::Method:   pArray = pMethods.get();  break;
+        case SbxClassType::Object:   pArray = pObjs.get();     break;
+        default: SAL_WARN( "basic", "Invalid SBX-Class" ); break;
+        }
     }
     if( pArray )
     {
@@ -351,7 +354,7 @@ SbxArray* SbxObject::FindVar( SbxVariable* pVar, 
sal_uInt16& nArrayIdx )
             for( sal_uInt16 i = 0; i < pArray->Count(); i++ )
             {
                 SbxVariableRef& rRef = pArray->GetRef( i );
-                if( static_cast<SbxVariable*>(rRef) == pOld )
+                if( rRef.get() == pOld )
                 {
                     nArrayIdx = i; break;
                 }
@@ -371,9 +374,9 @@ SbxVariable* SbxObject::Make( const OUString& rName, 
SbxClassType ct, SbxDataTyp
     switch( ct )
     {
     case SbxClassType::Variable:
-    case SbxClassType::Property: pArray = pProps;    break;
-    case SbxClassType::Method:   pArray = pMethods;  break;
-    case SbxClassType::Object:   pArray = pObjs;     break;
+    case SbxClassType::Property: pArray = pProps.get();    break;
+    case SbxClassType::Method:   pArray = pMethods.get();  break;
+    case SbxClassType::Object:   pArray = pObjs.get();     break;
     default: SAL_WARN( "basic", "Invalid SBX-Class" ); break;
     }
     if( !pArray )
@@ -425,7 +428,7 @@ void SbxObject::Insert( SbxVariable* pVar )
         {
             // Then this element exists already
             // There are objects of the same name allowed at collections
-            if( pArray == pObjs && nullptr != dynamic_cast<const 
SbxCollection*>( this ) )
+            if( pArray == pObjs.get() && nullptr != dynamic_cast<const 
SbxCollection*>( this ) )
             {
                 nIdx = pArray->Count();
             }
@@ -484,9 +487,9 @@ void SbxObject::QuickInsert( SbxVariable* pVar )
         switch( pVar->GetClass() )
         {
         case SbxClassType::Variable:
-        case SbxClassType::Property: pArray = pProps;    break;
-        case SbxClassType::Method:   pArray = pMethods;  break;
-        case SbxClassType::Object:   pArray = pObjs;     break;
+        case SbxClassType::Property: pArray = pProps.get();    break;
+        case SbxClassType::Method:   pArray = pMethods.get();  break;
+        case SbxClassType::Object:   pArray = pObjs.get();     break;
         default: SAL_WARN( "basic", "Invalid SBX-Class" ); break;
         }
     }
@@ -544,7 +547,7 @@ void SbxObject::Remove( SbxVariable* pVar )
         {
             EndListening( pVar_->GetBroadcaster(), true );
         }
-        if( static_cast<SbxVariable*>(pVar_) == pDfltProp )
+        if( pVar_.get() == pDfltProp )
         {
             pDfltProp = nullptr;
         }
@@ -568,14 +571,14 @@ static bool LoadArray( SvStream& rStrm, SbxObject* pThis, 
SbxArray* pArray )
     for( sal_uInt16 i = 0; i < p->Count(); i++ )
     {
         SbxVariableRef& r = p->GetRef( i );
-        SbxVariable* pVar = r;
+        SbxVariable* pVar = r.get();
         if( pVar )
         {
             pVar->SetParent( pThis );
             pThis->StartListening( pVar->GetBroadcaster(), true );
         }
     }
-    pArray->Merge( p );
+    pArray->Merge( p.get() );
     return true;
 }
 
@@ -612,9 +615,9 @@ bool SbxObject::LoadData( SvStream& rStrm, sal_uInt16 nVer )
     {
         rStrm.Seek( nPos );
     }
-    if( !LoadArray( rStrm, this, pMethods ) ||
-        !LoadArray( rStrm, this, pProps ) ||
-        !LoadArray( rStrm, this, pObjs ) )
+    if( !LoadArray( rStrm, this, pMethods.get() ) ||
+        !LoadArray( rStrm, this, pProps.get() ) ||
+        !LoadArray( rStrm, this, pObjs.get() ) )
     {
         return false;
     }
@@ -758,7 +761,7 @@ void SbxObject::Dump( SvStream& rStrm, bool bFill )
     for( sal_uInt16 i = 0; i < pMethods->Count(); i++ )
     {
         SbxVariableRef& r = pMethods->GetRef( i );
-        SbxVariable* pVar = r;
+        SbxVariable* pVar = r.get();
         if( pVar )
         {
             OUString aLine = aIndent + "  - " + pVar->GetName( 
SbxNAME_SHORT_TYPES );
@@ -795,7 +798,7 @@ void SbxObject::Dump( SvStream& rStrm, bool bFill )
         for( sal_uInt16 i = 0; i < pProps->Count(); i++ )
         {
             SbxVariableRef& r = pProps->GetRef( i );
-            SbxVariable* pVar = r;
+            SbxVariable* pVar = r.get();
             if( pVar )
             {
                 OUString aLine = aIndent + "  - " + pVar->GetName( 
SbxNAME_SHORT_TYPES );
@@ -833,7 +836,7 @@ void SbxObject::Dump( SvStream& rStrm, bool bFill )

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to