expand out ChartModelHelper::findDiagram

since it just calls findFirstChartDiagram

Change-Id: I21eb9a747127ad54f3b5875074a7bf7ffbf79e4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149681
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
index 5bcd885..aab6f49 100644
--- a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
+++ b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
@@ -156,7 +156,7 @@ sal_Int32 Chart2ModelContact::getExplicitNumberFormatKeyForAxis(
{
    rtl::Reference< BaseCoordinateSystem > xCooSys(
        AxisHelper::getCoordinateSystemOfAxis(
              xAxis, ChartModelHelper::findDiagram( m_xChartModel ) ) );
              xAxis, m_xChartModel.get()->getFirstChartDiagram() ) );

    return ExplicitValueProvider::getExplicitNumberFormatKeyForAxis( xAxis, xCooSys
              , m_xChartModel.get() );
@@ -195,7 +195,7 @@ awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingTitle() const
awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingAxes() const
{
    awt::Rectangle aRect(0,0,0,0);
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel );
    rtl::Reference< Diagram > xDiagram = m_xChartModel.get()->getFirstChartDiagram();

    if( xDiagram && xDiagram->getDiagramPositioningMode() == DiagramPositioningMode::Including )
        aRect = DiagramHelper::getDiagramRectangleFromModel(m_xChartModel.get());
@@ -211,7 +211,7 @@ awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingAxes() const
awt::Rectangle Chart2ModelContact::GetDiagramRectangleExcludingAxes() const
{
    awt::Rectangle aRect(0,0,0,0);
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel );
    rtl::Reference< Diagram > xDiagram = m_xChartModel.get()->getFirstChartDiagram();

    if( xDiagram && xDiagram->getDiagramPositioningMode() == DiagramPositioningMode::Excluding )
        aRect = DiagramHelper::getDiagramRectangleFromModel(m_xChartModel.get());
diff --git a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
index d3fb9cd..5c27adc 100644
--- a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
@@ -1179,7 +1179,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance(
                {
                    // locked controllers
                    ControllerLockGuardUNO aCtrlLockGuard( xChartDoc );
                    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartDoc );
                    rtl::Reference< Diagram > xDiagram = xChartDoc->getFirstChartDiagram();
                    ThreeDLookScheme e3DScheme = xDiagram->detectScheme();
                    rtl::Reference< ::chart::ChartTypeManager > xTemplateManager = xChartDoc->getTypeManager();
                    Diagram::tTemplateWithServiceName aTemplateWithService(
diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
index c3da099..581e5e8 100644
--- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
+++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
@@ -314,7 +314,7 @@ void ChartTypeDialogController::commitToModel( const ChartTypeParameter& rParame

    // locked controllers
    ControllerLockGuardUNO aCtrlLockGuard( xChartModel );
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
    Diagram::tTemplateWithServiceName aTemplateWithService(
        xDiagram->getTemplate( xTemplateManager ));
    if( aTemplateWithService.xChartTypeTemplate.is())
@@ -1155,7 +1155,7 @@ void CombiColumnLineChartDialogController::fillExtraControls(
    if (!m_xMF_NumberOfLines)
        return;

    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
    if(!xDiagram.is())
        return;

diff --git a/chart2/source/controller/dialogs/DataBrowserModel.cxx b/chart2/source/controller/dialogs/DataBrowserModel.cxx
index ffddcac..c0a89a2 100644
--- a/chart2/source/controller/dialogs/DataBrowserModel.cxx
+++ b/chart2/source/controller/dialogs/DataBrowserModel.cxx
@@ -286,7 +286,7 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex )
        nAfterColumnIndex = getCategoryColumnCount()-1;

    sal_Int32 nStartCol = 0;
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(m_xChartDocument);
    rtl::Reference< Diagram > xDiagram = m_xChartDocument->getFirstChartDiagram();
    rtl::Reference<ChartType> xChartType;
    rtl::Reference<DataSeries> xSeries;
    if (o3tl::make_unsigned(nAfterColumnIndex) < m_aColumns.size())
@@ -749,7 +749,7 @@ void DataBrowserModel::updateFromModel()
    m_aColumns.clear();
    m_aHeaders.clear();

    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( m_xChartDocument ));
    rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram());
    if( !xDiagram.is())
        return;

diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
index 64e440a..e4ec234 100644
--- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx
+++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
@@ -66,7 +66,7 @@ OUString lcl_getDataSeriesName( std::u16string_view rObjectCID, const rtl::Refer
{
    OUString aRet;

    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel );
    if( xDiagram.is() && xSeries.is() )
    {
@@ -340,7 +340,7 @@ OUString ObjectNameProvider::getAxisName( std::u16string_view rObjectCID
    sal_Int32 nCooSysIndex = 0;
    sal_Int32 nDimensionIndex = 0;
    sal_Int32 nAxisIndex = 0;
    AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ), nCooSysIndex, nDimensionIndex, nAxisIndex );
    AxisHelper::getIndicesForAxis( xAxis, xChartModel->getFirstChartDiagram(), nCooSysIndex, nDimensionIndex, nAxisIndex );

    switch(nDimensionIndex)
    {
@@ -433,7 +433,7 @@ OUString ObjectNameProvider::getGridName( std::u16string_view rObjectCID
    sal_Int32 nDimensionIndex = -1;
    sal_Int32 nAxisIndex = -1;
    rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rObjectCID , xChartModel );
    AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram( xChartModel )
    AxisHelper::getIndicesForAxis( xAxis, xChartModel->getFirstChartDiagram()
              , nCooSysIndex , nDimensionIndex, nAxisIndex );

    bool bMainGrid = (ObjectIdentifier::getObjectType( rObjectCID ) == OBJECTTYPE_GRID);
@@ -509,7 +509,7 @@ OUString ObjectNameProvider::getHelpText( std::u16string_view rObjectCID, const 
        else
            aRet=SchResId(STR_TIP_DATAPOINT);

        rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
        rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
        rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel );
        if( xDiagram.is() && xSeries.is() )
        {
@@ -731,7 +731,7 @@ OUString ObjectNameProvider::getSelectedObjectText( std::u16string_view rObjectC
    {
        aRet = SchResId( STR_STATUS_DATAPOINT_MARKED );

        rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartDocument ) );
        rtl::Reference< Diagram > xDiagram( xChartDocument->getFirstChartDiagram() );
        rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartDocument );
        if( xDiagram.is() && xSeries.is() )
        {
diff --git a/chart2/source/controller/dialogs/TitleDialogData.cxx b/chart2/source/controller/dialogs/TitleDialogData.cxx
index 16b6820..f110b3d 100644
--- a/chart2/source/controller/dialogs/TitleDialogData.cxx
+++ b/chart2/source/controller/dialogs/TitleDialogData.cxx
@@ -41,7 +41,7 @@ TitleDialogData::TitleDialogData( std::unique_ptr<ReferenceSizeProvider> pRefSiz

void TitleDialogData::readFromModel( const rtl::Reference<::chart::ChartModel>& xChartModel )
{
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(xChartModel);
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();

    //get possibilities
    uno::Sequence< sal_Bool > aAxisPossibilityList;
diff --git a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
index fcd573a..9f2963b 100644
--- a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
+++ b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
@@ -77,7 +77,7 @@ double InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals(
    ExplicitValueProvider* pExplicitValueProvider( xChartView.get() );
    if( pExplicitValueProvider )
    {
        rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
        rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
        rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSelectedObjectCID, xChartModel );
        rtl::Reference< Axis > xAxis = xDiagram->getAttachedAxis( xSeries );
        if(!xAxis.is())
diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
index eac12af..359a998 100644
--- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
+++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
@@ -122,7 +122,7 @@ ObjectPropertiesDialogParameter::~ObjectPropertiesDialogParameter()
void ObjectPropertiesDialogParameter::init( const rtl::Reference<::chart::ChartModel>& xChartModel )
{
    m_xChartDocument = xChartModel;
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
    rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( m_aObjectCID, xChartModel );
    rtl::Reference< ChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries );
    sal_Int32 nDimensionCount = 0;
diff --git a/chart2/source/controller/dialogs/dlg_View3D.cxx b/chart2/source/controller/dialogs/dlg_View3D.cxx
index abc2645..367f110 100644
--- a/chart2/source/controller/dialogs/dlg_View3D.cxx
+++ b/chart2/source/controller/dialogs/dlg_View3D.cxx
@@ -40,7 +40,7 @@ View3DDialog::View3DDialog(weld::Window* pParent, const rtl::Reference<::chart::
    , m_aControllerLocker(xChartModel)
    , m_xTabControl(m_xBuilder->weld_notebook("tabcontrol"))
{
    rtl::Reference< Diagram > xSceneProperties = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xSceneProperties = xChartModel->getFirstChartDiagram();

    m_xTabControl->append_page("geometry", SchResId(STR_PAGE_PERSPECTIVE));
    m_xGeometry.reset(new ThreeD_SceneGeometry_TabPage(m_xTabControl->get_page("geometry"), xSceneProperties, m_aControllerLocker));
diff --git a/chart2/source/controller/dialogs/res_LegendPosition.cxx b/chart2/source/controller/dialogs/res_LegendPosition.cxx
index f93baf1..49e348f 100644
--- a/chart2/source/controller/dialogs/res_LegendPosition.cxx
+++ b/chart2/source/controller/dialogs/res_LegendPosition.cxx
@@ -79,7 +79,7 @@ void LegendPositionResources::writeToResources( const rtl::Reference<::chart::Ch
{
    try
    {
        rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
        rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
        uno::Reference< beans::XPropertySet > xProp( xDiagram->getLegend(), uno::UNO_QUERY );
        if( xProp.is() )
        {
diff --git a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx
index 5383861..e07969c 100644
--- a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx
+++ b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx
@@ -53,7 +53,7 @@ lcl_ModelProperties lcl_getPropertiesFromModel( rtl::Reference<::chart::ChartMod
    lcl_ModelProperties aProps;
    try
    {
        rtl::Reference< ::chart::Diagram > xDiagram( ::chart::ChartModelHelper::findDiagram( xModel ) );
        rtl::Reference< ::chart::Diagram > xDiagram( xModel->getFirstChartDiagram() );
        xDiagram->getPropertyValue( "D3DSceneShadeMode" ) >>= aProps.m_aShadeMode;
        ::chart::ThreeDHelper::getRoundedEdgesAndObjectLines( xDiagram, aProps.m_nRoundedEdges, aProps.m_nObjectLines );
        aProps.m_eScheme = xDiagram->detectScheme();
@@ -69,7 +69,7 @@ void lcl_setShadeModeAtModel( rtl::Reference<::chart::ChartModel> const & xModel
{
    try
    {
        rtl::Reference< ::chart::Diagram > xDiaProp = ::chart::ChartModelHelper::findDiagram( xModel );
        rtl::Reference< ::chart::Diagram > xDiaProp = xModel->getFirstChartDiagram();
        xDiaProp->setPropertyValue( "D3DSceneShadeMode" , uno::Any( aShadeMode ));
    }
    catch( const uno::Exception & )
@@ -159,7 +159,7 @@ void ThreeD_SceneAppearance_TabPage::applyRoundedEdgeAndObjectLinesToModel()
    // locked controllers
    ControllerLockHelperGuard aGuard( m_rControllerLockHelper );
    ThreeDHelper::setRoundedEdgesAndObjectLines(
        ::chart::ChartModelHelper::findDiagram( m_xChartModel ), nCurrentRoundedEdges, nObjectLines );
        m_xChartModel->getFirstChartDiagram(), nCurrentRoundedEdges, nObjectLines );
}

void ThreeD_SceneAppearance_TabPage::applyShadeModeToModel()
@@ -270,7 +270,7 @@ IMPL_LINK_NOARG(ThreeD_SceneAppearance_TabPage, SelectSchemeHdl, weld::ComboBox&
        // locked controllers
        ControllerLockHelperGuard aGuard( m_rControllerLockHelper );

        rtl::Reference< Diagram > xDiagram = ::chart::ChartModelHelper::findDiagram( m_xChartModel );
        rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram();

        if( m_xLB_Scheme->get_active() == POS_3DSCHEME_REALISTIC )
            xDiagram->setScheme( ThreeDLookScheme::ThreeDLookScheme_Realistic );
diff --git a/chart2/source/controller/dialogs/tp_ChartType.cxx b/chart2/source/controller/dialogs/tp_ChartType.cxx
index e34f918..5c73ed1 100644
--- a/chart2/source/controller/dialogs/tp_ChartType.cxx
+++ b/chart2/source/controller/dialogs/tp_ChartType.cxx
@@ -180,7 +180,7 @@ void ChartTypeTabPage::stateChanged()
    commitToModel( aParameter );

    //detect the new ThreeDLookScheme
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
    rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram();
    // tdf#124295 - select always a 3D scheme
    if (ThreeDLookScheme aThreeDLookScheme = xDiagram->detectScheme();
        aThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Unknown)
@@ -245,12 +245,12 @@ void ChartTypeTabPage::selectMainType()
    m_pCurrentMainType->adjustParameterToMainType( aParameter );
    commitToModel( aParameter );
    //detect the new ThreeDLookScheme
    aParameter.eThreeDLookScheme = ChartModelHelper::findDiagram( m_xChartModel )->detectScheme();
    aParameter.eThreeDLookScheme = m_xChartModel->getFirstChartDiagram()->detectScheme();
    if (!aParameter.b3DLook
        && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic)
        aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;

    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
    rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram();
    try
    {
        xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues;
@@ -304,7 +304,7 @@ void ChartTypeTabPage::initializePage()
    if( !m_xChartModel.is() )
        return;
    rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = m_xChartModel->getTypeManager();
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel );
    rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram();
    Diagram::tTemplateWithServiceName aTemplate =
        xDiagram->getTemplate( xChartTypeManager );
    OUString aServiceName( aTemplate.sServiceName );
diff --git a/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx b/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx
index 76eb799..e0fd6a5 100644
--- a/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx
+++ b/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx
@@ -76,7 +76,7 @@ void TitlesAndObjectsTabPage::initializePage()

    //init grid checkboxes
    {
        rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel );
        rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram();
        uno::Sequence< sal_Bool > aPossibilityList;
        uno::Sequence< sal_Bool > aExistenceList;
        AxisHelper::getAxisOrGridPossibilities( aPossibilityList, xDiagram, false );
@@ -121,7 +121,7 @@ void TitlesAndObjectsTabPage::commitToModel()

    //commit grid changes to model
    {
        rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel );
        rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram();
        uno::Sequence< sal_Bool > aOldExistenceList;
        AxisHelper::getAxisOrGridExistence( aOldExistenceList, xDiagram, false );
        uno::Sequence< sal_Bool > aNewExistenceList(aOldExistenceList);
diff --git a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
index 436e6e2..79020e0 100644
--- a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
@@ -355,7 +355,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet & rOutI
            //necessary tp display the crossing value with an appropriate format

            rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis(
                m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) );
                m_xAxis, m_xChartDoc->getFirstChartDiagram() ) );

            rtl::Reference< Axis > xCrossingMainAxis = AxisHelper::getCrossingMainAxis( m_xAxis, xCooSys );

@@ -405,7 +405,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet & rOutI
            {
                rtl::Reference< BaseCoordinateSystem > xCooSys(
                        AxisHelper::getCoordinateSystemOfAxis(
                              m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) );
                              m_xAxis, m_xChartDoc->getFirstChartDiagram() ) );

                sal_Int32 nFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
                    m_xAxis, xCooSys, m_xChartDoc);
@@ -434,7 +434,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet & rOutI
        case SCHATTR_AXIS_ALLOW_DATEAXIS:
        {
            rtl::Reference< BaseCoordinateSystem > xCooSys(
                AxisHelper::getCoordinateSystemOfAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) );
                AxisHelper::getCoordinateSystemOfAxis( m_xAxis, m_xChartDoc->getFirstChartDiagram() ) );
            sal_Int32 nDimensionIndex=0; sal_Int32 nAxisIndex=0;
            AxisHelper::getIndicesForAxis(m_xAxis, xCooSys, nDimensionIndex, nAxisIndex );
            bool bChartTypeAllowsDateAxis = ChartTypeHelper::isSupportingDateAxis( AxisHelper::getChartTypeByIndex( xCooSys, 0 ), nDimensionIndex );
@@ -716,7 +716,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet 
                    {
                        //keep old and new settings for axis positioning in sync somehow
                        rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis(
                            m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) );
                            m_xAxis, m_xChartDoc->getFirstChartDiagram() ) );

                        sal_Int32 nDimensionIndex=0;
                        sal_Int32 nAxisIndex=0;
@@ -757,7 +757,8 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet 
                //move the parallel axes to the other side if necessary
                if( eAxisPos==css::chart::ChartAxisPosition_START || eAxisPos==css::chart::ChartAxisPosition_END )
                {
                    rtl::Reference< Axis > xParallelAxis = AxisHelper::getParallelAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) );
                    rtl::Reference<Diagram> xDiagram = m_xChartDoc->getFirstChartDiagram();
                    rtl::Reference< Axis > xParallelAxis = AxisHelper::getParallelAxis( m_xAxis, xDiagram );
                    if( xParallelAxis.is() )
                    {
                        css::chart::ChartAxisPosition eOtherPos;
@@ -793,7 +794,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet 
                //keep old and new settings for axis positioning in sync somehow
                {
                    rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis(
                        m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) );
                        m_xAxis, m_xChartDoc->getFirstChartDiagram() ) );

                    sal_Int32 nDimensionIndex=0;
                    sal_Int32 nAxisIndex=0;
@@ -840,7 +841,8 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet 
                //move the parallel axes to the other side if necessary
                if( ePos==css::chart::ChartAxisLabelPosition_OUTSIDE_START || ePos==css::chart::ChartAxisLabelPosition_OUTSIDE_END )
                {
                    rtl::Reference< Axis > xParallelAxis = AxisHelper::getParallelAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) );
                    rtl::Reference<Diagram> xDiagram = m_xChartDoc->getFirstChartDiagram();
                    rtl::Reference< Axis > xParallelAxis = AxisHelper::getParallelAxis( m_xAxis, xDiagram );
                    if( xParallelAxis.is() )
                    {
                        css::chart::ChartAxisLabelPosition eOtherPos;
@@ -941,7 +943,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet 
                    {
                        rtl::Reference< BaseCoordinateSystem > xCooSys =
                            AxisHelper::getCoordinateSystemOfAxis(
                                m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) );
                                m_xAxis, m_xChartDoc->getFirstChartDiagram() );

                        sal_Int32 nFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
                            m_xAxis, xCooSys, m_xChartDoc);
diff --git a/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx b/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
index e71646c..f096ecd4 100644
--- a/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
@@ -240,7 +240,7 @@ DataPointItemConverter::DataPointItemConverter(
            dynamic_cast<DataSeries*>(rPropertySet.get()), rItemPool ));
    }

    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram(xChartModel) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    rtl::Reference< ChartType > xChartType( xDiagram->getChartTypeOfSeries( xSeries ) );
    bool bFound = false;
    bool bAmbiguous = false;
diff --git a/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx b/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx
index bfd5b3c..12630b7 100644
--- a/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx
+++ b/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx
@@ -50,7 +50,7 @@ AllAxisItemConverter::AllAxisItemConverter(
    const awt::Size* pRefSize )
        : MultipleItemConverter( rItemPool )
{
    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    const std::vector< rtl::Reference< Axis > > aElementList = AxisHelper::getAllAxesOfDiagram( xDiagram );
    for( rtl::Reference< Axis > const & axis : aElementList )
    {
@@ -79,7 +79,7 @@ AllGridItemConverter::AllGridItemConverter(
    const uno::Reference< lang::XMultiServiceFactory > & xNamedPropertyContainerFactory )
        : MultipleItemConverter( rItemPool )
{
    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    std::vector< rtl::Reference< GridProperties > > aElementList( AxisHelper::getAllGrids( xDiagram ) );
    for( rtl::Reference< GridProperties > const & xObjectProperties : aElementList )
    {
diff --git a/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx b/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
index 8bd3296..b0ae879 100644
--- a/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
@@ -74,7 +74,7 @@ SeriesOptionsItemConverter::SeriesOptionsItemConverter(
    {
        m_bAttachToMainAxis = DiagramHelper::isSeriesAttachedToMainAxis( xDataSeries );

        rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram(xChartModel) );
        rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
        rtl::Reference< ChartType > xChartType( xDiagram->getChartTypeOfSeries( xDataSeries ) );

        m_xCooSys = DataSeriesHelper::getCoordinateSystemOfSeries( xDataSeries, xDiagram );
@@ -183,7 +183,7 @@ bool SeriesOptionsItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const Sf
            {
                //change model:
                rtl::Reference<DataSeries> xDataSeries = dynamic_cast<DataSeries*>( GetPropertySet().get() );
                bChanged = ChartModelHelper::findDiagram(m_xChartModel)->attachSeriesToAxis( bAttachToMainAxis, xDataSeries
                bChanged = m_xChartModel->getFirstChartDiagram()->attachSeriesToAxis( bAttachToMainAxis, xDataSeries
                    , m_xCC );

                if( bChanged )
@@ -205,7 +205,7 @@ bool SeriesOptionsItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const Sf
                    aPropName = "OverlapSequence";

                rtl::Reference< DataSeries > xDataSeries( dynamic_cast<DataSeries*>(GetPropertySet().get()) );
                rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram(m_xChartModel) );
                rtl::Reference< Diagram > xDiagram( m_xChartModel->getFirstChartDiagram() );
                rtl::Reference< ChartType > xChartType( xDiagram->getChartTypeOfSeries( xDataSeries ) );
                if( xChartType.is() )
                {
@@ -238,7 +238,7 @@ bool SeriesOptionsItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const Sf
            if( m_bSupportingBarConnectors )
            {
                bool bOldConnectBars = false;
                rtl::Reference< Diagram > xDiagramProperties( ChartModelHelper::findDiagram(m_xChartModel), uno::UNO_QUERY );
                rtl::Reference< Diagram > xDiagramProperties( m_xChartModel->getFirstChartDiagram() );
                if( xDiagramProperties.is() &&
                    (xDiagramProperties->getPropertyValue( "ConnectBars" ) >>= bOldConnectBars) &&
                    bOldConnectBars != m_bConnectBars )
@@ -257,7 +257,7 @@ bool SeriesOptionsItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const Sf
            if( m_bSupportingAxisSideBySide )
            {
                bool bOldGroupBarsPerAxis = true;
                rtl::Reference< Diagram > xDiagramProperties( ChartModelHelper::findDiagram(m_xChartModel), uno::UNO_QUERY );
                rtl::Reference< Diagram > xDiagramProperties( m_xChartModel->getFirstChartDiagram() );
                if( xDiagramProperties.is() &&
                    (xDiagramProperties->getPropertyValue( "GroupBarsPerAxis" ) >>= bOldGroupBarsPerAxis) &&
                    bOldGroupBarsPerAxis != m_bGroupBarsPerAxis )
@@ -274,7 +274,7 @@ bool SeriesOptionsItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const Sf
            if( m_bSupportingStartingAngle )
            {
                m_nStartingAngle = static_cast< const SdrAngleItem & >( rItemSet.Get( nWhichId )).GetValue().get() / 100;
                rtl::Reference< Diagram > xDiagramProperties( ChartModelHelper::findDiagram(m_xChartModel), uno::UNO_QUERY );
                rtl::Reference< Diagram > xDiagramProperties( m_xChartModel->getFirstChartDiagram() );
                if( xDiagramProperties.is() )
                {
                    xDiagramProperties->setPropertyValue( "StartingAngle" , uno::Any(m_nStartingAngle) );
@@ -311,7 +311,7 @@ bool SeriesOptionsItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const Sf
                {
                    try
                    {
                        rtl::Reference< Diagram > xDiagramProperties( ChartModelHelper::findDiagram(m_xChartModel), uno::UNO_QUERY );
                        rtl::Reference< Diagram > xDiagramProperties( m_xChartModel->getFirstChartDiagram() );
                        if( xDiagramProperties.is() )
                        {
                            xDiagramProperties->setPropertyValue( "MissingValueTreatment" , uno::Any( nNew ));
diff --git a/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx b/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
index b4097d2..4398209 100644
--- a/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
@@ -211,7 +211,7 @@ TextLabelItemConverter::TextLabelItemConverter(
{
    maConverters.emplace_back(new CharacterPropertyItemConverter(rPropertySet, rItemPool, pRefSize, "ReferencePageSize"));

    rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xChartModel));
    rtl::Reference< Diagram > xDiagram(xChartModel->getFirstChartDiagram());
    rtl::Reference< ChartType > xChartType(xDiagram->getChartTypeOfSeries(xSeries));
    bool bFound = false;
    bool bAmbiguous = false;
diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index bc658ef..0b3c16d 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -636,7 +636,7 @@ rtl::Reference<::chart::ChartModel> ChartController::getChartModel()

rtl::Reference<::chart::Diagram> ChartController::getFirstDiagram()
{
    return ChartModelHelper::findDiagram( getChartModel() );
    return getChartModel()->getFirstChartDiagram();
}

uno::Any SAL_CALL ChartController::getViewData()
diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx
index 49dd90f..b310178 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -204,7 +204,7 @@ wrapper::ItemConverter* createItemConverter(
                rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( aObjectCID, xChartModel );
                rtl::Reference< ChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries );

                rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
                rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
                sal_Int32 nDimensionCount = xDiagram->getDimension();
                if( !ChartTypeHelper::isSupportingAreaProperties( xChartType, nDimensionCount ) )
                    eMapTo = wrapper::GraphicObjectType::LineDataPoint;
@@ -384,14 +384,14 @@ OUString lcl_getAxisCIDForCommand( std::string_view rDispatchCommand, const rtl:
        nDimensionIndex=1; bMainAxis=false;
    }

    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
    rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram );
    return ObjectIdentifier::createClassifiedIdentifierForObject( xAxis, xChartModel );
}

OUString lcl_getGridCIDForCommand( std::string_view rDispatchCommand, const rtl::Reference<::chart::ChartModel>& xChartModel )
{
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();

    if( rDispatchCommand == "DiagramGridAll")
        return ObjectIdentifier::createClassifiedIdentifier( OBJECTTYPE_GRID, u"ALLELEMENTS" );
diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index 5fcfe2b..e86662d 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -113,7 +113,7 @@ bool lcl_deleteDataSeries(
                    ActionDescriptionProvider::ActionType::Delete, SchResId( STR_OBJECT_DATASERIES )),
                xUndoManager );

            rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel );
            rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram();
            rtl::Reference< Axis > xAxis = xDiagram->getAttachedAxis( xSeries );

            DataSeriesHelper::deleteSeries( xSeries, xChartType );
@@ -185,7 +185,7 @@ void ChartController::executeDispatch_NewArrangement()
    try
    {
        rtl::Reference<::chart::ChartModel> xModel( getChartModel() );
        rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel );
        rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram();
        if( xDiagram.is())
        {
            UndoGuard aUndoGuard(
diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx b/chart2/source/controller/main/ControllerCommandDispatch.cxx
index 4feb43e..9e03e49 100644
--- a/chart2/source/controller/main/ControllerCommandDispatch.cxx
+++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx
@@ -193,7 +193,7 @@ void ControllerState::update(
    bIsPositionableObject = (aObjectType != OBJECTTYPE_DATA_POINT) && aSelOID.isDragableObject();
    bIsTextObject = aObjectType == OBJECTTYPE_TITLE;

    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel );
    rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram();
    bIsFormateableObjectSelected = bHasSelectedObject && aSelOID.isAutoGeneratedObject();
    if( aObjectType==OBJECTTYPE_DIAGRAM || aObjectType==OBJECTTYPE_DIAGRAM_WALL || aObjectType==OBJECTTYPE_DIAGRAM_FLOOR )
        bIsFormateableObjectSelected = xDiagram->isSupportingFloorAndWall();
@@ -395,7 +395,7 @@ ModelState::ModelState() :

void ModelState::update( const rtl::Reference<::chart::ChartModel> & xModel )
{
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel );
    rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram();

    bIsReadOnly = xModel->isReadonly();

diff --git a/chart2/source/controller/main/DragMethod_RotateDiagram.cxx b/chart2/source/controller/main/DragMethod_RotateDiagram.cxx
index 1fcd94a..8343319 100644
--- a/chart2/source/controller/main/DragMethod_RotateDiagram.cxx
+++ b/chart2/source/controller/main/DragMethod_RotateDiagram.cxx
@@ -73,7 +73,7 @@ DragMethod_RotateDiagram::DragMethod_RotateDiagram( DrawViewWrapper& rDrawViewWr

    m_aWireframePolyPolygon = m_pScene->CreateWireframe();

    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(getChartModel());
    rtl::Reference< Diagram > xDiagram = getChartModel()->getFirstChartDiagram();
    if( !xDiagram.is() )
        return;

@@ -160,13 +160,13 @@ bool DragMethod_RotateDiagram::EndSdrDrag(bool /*bCopy*/)
        if(m_bRightAngledAxes)
            ThreeDHelper::adaptRadAnglesForRightAngledAxes( fResultX, fResultY );

        rtl::Reference<Diagram> xDiagram = ChartModelHelper::findDiagram( getChartModel() );
        rtl::Reference<Diagram> xDiagram = getChartModel()->getFirstChartDiagram();
        if (xDiagram)
            xDiagram->setRotationAngle( fResultX, fResultY, fResultZ );
    }
    else
    {
        rtl::Reference<Diagram> xDiagram = ChartModelHelper::findDiagram( getChartModel() );
        rtl::Reference<Diagram> xDiagram = getChartModel()->getFirstChartDiagram();
        if (xDiagram)
            xDiagram->setRotation(
                m_nInitialHorizontalAngleDegree+m_nAdditionalHorizontalAngleDegree, m_nInitialVerticalAngleDegree+m_nAdditionalVerticalAngleDegree );
diff --git a/chart2/source/controller/main/ObjectHierarchy.cxx b/chart2/source/controller/main/ObjectHierarchy.cxx
index 6ca73a9..4484685 100644
--- a/chart2/source/controller/main/ObjectHierarchy.cxx
+++ b/chart2/source/controller/main/ObjectHierarchy.cxx
@@ -113,7 +113,7 @@ void ObjectHierarchy::createTree( const rtl::Reference<::chart::ChartModel>& xCh
        return;

    //@todo: change ObjectIdentifier to take an XChartDocument rather than XModel
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartDocument );
    rtl::Reference< Diagram > xDiagram = xChartDocument->getFirstChartDiagram();
    ObjectIdentifier aDiaOID;
    if( xDiagram.is() )
        aDiaOID = ObjectIdentifier( ObjectIdentifier::createClassifiedIdentifierForObject( static_cast<cppu::OWeakObject*>(xDiagram.get()), xChartDocument ) );
diff --git a/chart2/source/controller/main/SelectionHelper.cxx b/chart2/source/controller/main/SelectionHelper.cxx
index 4ece024..11fc5d9 100644
--- a/chart2/source/controller/main/SelectionHelper.cxx
+++ b/chart2/source/controller/main/SelectionHelper.cxx
@@ -448,7 +448,7 @@ bool SelectionHelper::isRotateableObject( std::u16string_view rCID
    if( !ObjectIdentifier::isRotateableObject( rCID ) )
        return false;

    sal_Int32 nDimensionCount = ChartModelHelper::findDiagram( xChartModel )->getDimension();
    sal_Int32 nDimensionCount = xChartModel->getFirstChartDiagram()->getDimension();

    return nDimensionCount == 3;
}
diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.cxx b/chart2/source/controller/sidebar/ChartElementsPanel.cxx
index 0153440..4f85635 100644
--- a/chart2/source/controller/sidebar/ChartElementsPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartElementsPanel.cxx
@@ -157,7 +157,7 @@ bool isTitleVisible(const rtl::Reference<::chart::ChartModel>& xModel, TitleHelp

bool isGridVisible(const rtl::Reference<::chart::ChartModel>& xModel, GridType eType)
{
    rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
    rtl::Reference< Diagram > xDiagram(xModel->getFirstChartDiagram());
    if(xDiagram.is())
    {
        sal_Int32 nDimensionIndex = 0;
@@ -174,7 +174,7 @@ bool isGridVisible(const rtl::Reference<::chart::ChartModel>& xModel, GridType e

void setGridVisible(const rtl::Reference<::chart::ChartModel>& xModel, GridType eType, bool bVisible)
{
    rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
    rtl::Reference< Diagram > xDiagram(xModel->getFirstChartDiagram());
    if(!xDiagram.is())
        return;

@@ -194,7 +194,7 @@ void setGridVisible(const rtl::Reference<::chart::ChartModel>& xModel, GridType 

bool isAxisVisible(const rtl::Reference<::chart::ChartModel>& xModel, AxisType eType)
{
    rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
    rtl::Reference< Diagram > xDiagram(xModel->getFirstChartDiagram());
    if(xDiagram.is())
    {
        sal_Int32 nDimensionIndex = 0;
@@ -213,7 +213,7 @@ bool isAxisVisible(const rtl::Reference<::chart::ChartModel>& xModel, AxisType e

void setAxisVisible(const rtl::Reference<::chart::ChartModel>& xModel, AxisType eType, bool bVisible)
{
    rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
    rtl::Reference< Diagram > xDiagram(xModel->getFirstChartDiagram());
    if(!xDiagram.is())
        return;

@@ -431,7 +431,7 @@ void ChartElementsPanel::updateData()
    if (!mbModelValid)
        return;

    rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(mxModel));
    rtl::Reference< Diagram > xDiagram(mxModel->getFirstChartDiagram());
    sal_Int32 nDimension = 0;
    if (xDiagram)
        nDimension = xDiagram->getDimension();
diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx
index fa17c48..ead59f7 100644
--- a/chart2/source/controller/sidebar/ChartTypePanel.cxx
+++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx
@@ -157,7 +157,7 @@ void ChartTypePanel::Initialize()
    if (!m_xChartModel.is())
        return;
    rtl::Reference<::chart::ChartTypeManager> xChartTypeManager = m_xChartModel->getTypeManager();
    rtl::Reference<Diagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
    rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram();
    Diagram::tTemplateWithServiceName aTemplate;
    if (xDiagram)
        aTemplate = xDiagram->getTemplate(xChartTypeManager);
@@ -222,7 +222,7 @@ void ChartTypePanel::updateData()
    if (!m_xChartModel.is())
        return;
    rtl::Reference<::chart::ChartTypeManager> xChartTypeManager = m_xChartModel->getTypeManager();
    rtl::Reference<Diagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
    rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram();
    Diagram::tTemplateWithServiceName aTemplate;
    if (xDiagram)
        aTemplate = xDiagram->getTemplate(xChartTypeManager);
@@ -369,7 +369,7 @@ void ChartTypePanel::stateChanged()
    commitToModel(aParameter);

    //detect the new ThreeDLookScheme
    rtl::Reference<Diagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
    rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram();
    aParameter.eThreeDLookScheme = xDiagram->detectScheme();
    try
    {
@@ -413,12 +413,12 @@ void ChartTypePanel::selectMainType()
    m_pCurrentMainType->adjustParameterToMainType(aParameter);
    commitToModel(aParameter);
    //detect the new ThreeDLookScheme
    aParameter.eThreeDLookScheme = ChartModelHelper::findDiagram(m_xChartModel)->detectScheme();
    aParameter.eThreeDLookScheme = m_xChartModel->getFirstChartDiagram()->detectScheme();
    if (!aParameter.b3DLook
        && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic)
        aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;

    rtl::Reference<Diagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
    rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram();
    try
    {
        xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues;
diff --git a/chart2/source/inc/ChartModelHelper.hxx b/chart2/source/inc/ChartModelHelper.hxx
index a49aec9..9c18af9 100644
--- a/chart2/source/inc/ChartModelHelper.hxx
+++ b/chart2/source/inc/ChartModelHelper.hxx
@@ -49,9 +49,6 @@ public:
    static rtl::Reference< InternalDataProvider > createInternalDataProvider(
            const rtl::Reference<::chart::ChartModel>& xChartDoc, bool bConnectToModel );

    static rtl::Reference< Diagram >
        findDiagram( const rtl::Reference< ::chart::ChartModel >& xModel );

    static rtl::Reference< ::chart::BaseCoordinateSystem >
        getFirstCoordinateSystem( const rtl::Reference<::chart::ChartModel>& xModel );

diff --git a/chart2/source/tools/ChartModelHelper.cxx b/chart2/source/tools/ChartModelHelper.cxx
index 59d8da2..3018797 100644
--- a/chart2/source/tools/ChartModelHelper.cxx
+++ b/chart2/source/tools/ChartModelHelper.cxx
@@ -76,24 +76,9 @@ rtl::Reference< InternalDataProvider > ChartModelHelper::createInternalDataProvi
    return new InternalDataProvider( xChartDoc, bConnectToModel, bDefaultDataInColumns );
}

rtl::Reference< Diagram > ChartModelHelper::findDiagram( const rtl::Reference<::chart::ChartModel>& xChartDoc )
{
    try
    {
        if( !xChartDoc )
            return nullptr;
        return xChartDoc->getFirstChartDiagram();
    }
    catch( const uno::Exception & )
    {
        DBG_UNHANDLED_EXCEPTION("chart2");
    }
    return nullptr;
}

rtl::Reference< BaseCoordinateSystem > ChartModelHelper::getFirstCoordinateSystem( const rtl::Reference<::chart::ChartModel>& xModel )
{
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel );
    rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram();
    if( xDiagram.is() )
    {
        auto& rCooSysSeq( xDiagram->getBaseCoordinateSystems() );
@@ -108,7 +93,7 @@ std::vector< rtl::Reference< DataSeries > > ChartModelHelper::getDataSeries(
{
    std::vector< rtl::Reference< DataSeries > > aResult;

    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartDoc );
    rtl::Reference< Diagram > xDiagram = xChartDoc->getFirstChartDiagram();
    if( xDiagram.is())
        aResult = xDiagram->getDataSeries();

@@ -119,7 +104,7 @@ rtl::Reference< ChartType > ChartModelHelper::getChartTypeOfSeries(
                                const rtl::Reference<::chart::ChartModel>& xModel
                              , const rtl::Reference< DataSeries >&   xGivenDataSeries )
{
    rtl::Reference<Diagram> xDiagram = ChartModelHelper::findDiagram( xModel );
    rtl::Reference<Diagram> xDiagram = xModel->getFirstChartDiagram();
    return xDiagram ? xDiagram->getChartTypeOfSeries( xGivenDataSeries ) : nullptr;
}

@@ -155,7 +140,7 @@ bool ChartModelHelper::isIncludeHiddenCells( const rtl::Reference<::chart::Chart
{
    bool bIncluded = true;  // hidden cells are included by default.

    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram(xChartModel) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    if (!xDiagram.is())
        return bIncluded;

diff --git a/chart2/source/tools/DataSourceHelper.cxx b/chart2/source/tools/DataSourceHelper.cxx
index 83e54cb..4f42e6e 100644
--- a/chart2/source/tools/DataSourceHelper.cxx
+++ b/chart2/source/tools/DataSourceHelper.cxx
@@ -273,7 +273,7 @@ uno::Sequence< OUString > DataSourceHelper::getUsedDataRanges(

uno::Sequence< OUString > DataSourceHelper::getUsedDataRanges( const rtl::Reference<::chart::ChartModel> & xChartModel )
{
    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    return getUsedDataRanges( xDiagram );
}

@@ -385,7 +385,7 @@ void DataSourceHelper::setRangeSegmentation(
    uno::Reference< data::XDataProvider > xDataProvider( xChartModel->getDataProvider() );
    if( !xDataProvider.is() )
        return;
    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    if( !xDiagram.is() )
        return;
    rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = xChartModel->getTypeManager();
diff --git a/chart2/source/tools/DiagramHelper.cxx b/chart2/source/tools/DiagramHelper.cxx
index 1cf1427..aca376c 100644
--- a/chart2/source/tools/DiagramHelper.cxx
+++ b/chart2/source/tools/DiagramHelper.cxx
@@ -457,7 +457,7 @@ bool DiagramHelper::setDiagramPositioning( const rtl::Reference<::chart::ChartMo

    bool bChanged = false;
    awt::Size aPageSize( ChartModelHelper::getPageSize(xChartModel) );
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
    if( !xDiagram.is() )
        return bChanged;

@@ -499,7 +499,7 @@ awt::Rectangle DiagramHelper::getDiagramRectangleFromModel( const rtl::Reference
{
    awt::Rectangle aRet(-1,-1,-1,-1);

    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel );
    rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
    if( !xDiagram.is() )
        return aRet;

diff --git a/chart2/source/tools/InternalDataProvider.cxx b/chart2/source/tools/InternalDataProvider.cxx
index 7983735..cd201b6 100644
--- a/chart2/source/tools/InternalDataProvider.cxx
+++ b/chart2/source/tools/InternalDataProvider.cxx
@@ -313,7 +313,7 @@ InternalDataProvider::InternalDataProvider(
        return;
    try
    {
        rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xModel ) );
        rtl::Reference< Diagram > xDiagram( xModel->getFirstChartDiagram() );
        if( xDiagram.is())
        {
            //data in columns?
diff --git a/chart2/source/tools/ObjectIdentifier.cxx b/chart2/source/tools/ObjectIdentifier.cxx
index 008e46f..dae3900 100644
--- a/chart2/source/tools/ObjectIdentifier.cxx
+++ b/chart2/source/tools/ObjectIdentifier.cxx
@@ -132,7 +132,7 @@ OUString lcl_getTitleParentParticle( TitleHelper::eTitleType aTitleType )

rtl::Reference<ChartType> lcl_getFirstStockChartType( const rtl::Reference<::chart::ChartModel>& xChartModel )
{
    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    if(!xDiagram.is())
        return nullptr;

@@ -212,7 +212,7 @@ void lcl_getDiagramAndCooSys( std::u16string_view rObjectCID
    sal_Int32 nDiagramIndex = -1;
    sal_Int32 nCooSysIndex = -1;
    lcl_parseCooSysIndices( nDiagramIndex, nCooSysIndex, rObjectCID );
    xDiagram = ChartModelHelper::findDiagram( xChartModel );//todo use nDiagramIndex when more than one diagram is possible in future
    xDiagram = xChartModel->getFirstChartDiagram();//todo use nDiagramIndex when more than one diagram is possible in future
    if( !xDiagram.is() )
        return;

@@ -333,7 +333,8 @@ OUString ObjectIdentifier::createClassifiedIdentifierForObject(
        rtl::Reference< Axis > xAxis = dynamic_cast<Axis*>( xObject.get() );
        if( xAxis.is() )
        {
            rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) ) );
            rtl::Reference<Diagram> xDiagram = xChartModel->getFirstChartDiagram();
            rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis( xAxis, xDiagram ) );
            OUString aCooSysParticle( createParticleForCoordinateSystem( xCooSys, xChartModel ) );
            sal_Int32 nDimensionIndex=-1;
            sal_Int32 nAxisIndex=-1;
@@ -411,7 +412,8 @@ OUString ObjectIdentifier::createClassifiedIdentifierForObject(
        //axis
        if( xAxis.is() )
        {
            rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) ) );
            rtl::Reference<Diagram> xDiagram = xChartModel->getFirstChartDiagram();
            rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis( xAxis, xDiagram ) );
            OUString aCooSysParticle( createParticleForCoordinateSystem( xCooSys, xChartModel ) );
            sal_Int32 nDimensionIndex=-1;
            sal_Int32 nAxisIndex=-1;
@@ -474,7 +476,7 @@ OUString ObjectIdentifier::createParticleForCoordinateSystem(
{
    OUString aRet;

    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
    rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() );
    if( xDiagram.is() )
    {
        std::size_t nCooSysIndex = 0;
diff --git a/chart2/source/tools/ReferenceSizeProvider.cxx b/chart2/source/tools/ReferenceSizeProvider.cxx
index 41580bd..e67d4fb 100644
--- a/chart2/source/tools/ReferenceSizeProvider.cxx
+++ b/chart2/source/tools/ReferenceSizeProvider.cxx
@@ -91,7 +91,7 @@ void ReferenceSizeProvider::setValuesAtTitle(

void ReferenceSizeProvider::setValuesAtAllDataSeries()
{
    rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( m_xChartDoc ));
    rtl::Reference< Diagram > xDiagram( m_xChartDoc->getFirstChartDiagram());

    // DataSeries/Points
    std::vector< rtl::Reference< DataSeries > > aSeries =
@@ -224,7 +224,7 @@ ReferenceSizeProvider::AutoResizeState ReferenceSizeProvider::getAutoResizeState
        return eResult;

    // diagram is needed by the rest of the objects
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartDoc );
    rtl::Reference< Diagram > xDiagram = xChartDoc->getFirstChartDiagram();
    if( ! xDiagram.is())
        return eResult;

@@ -301,7 +301,7 @@ void ReferenceSizeProvider::setAutoResizeState( ReferenceSizeProvider::AutoResiz
    impl_setValuesAtTitled( m_xChartDoc );

    // diagram is needed by the rest of the objects
    rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartDoc );
    rtl::Reference< Diagram > xDiagram = m_xChartDoc->getFirstChartDiagram();
    if( ! xDiagram.is())
        return;

diff --git a/chart2/source/tools/TitleHelper.cxx b/chart2/source/tools/TitleHelper.cxx
index f84298a..992f5cd 100644
--- a/chart2/source/tools/TitleHelper.cxx
+++ b/chart2/source/tools/TitleHelper.cxx
@@ -208,7 +208,7 @@ rtl::Reference< Title > TitleHelper::createTitle(

    if( !xTitled.is() )
    {
        rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xModel ) );
        rtl::Reference< Diagram > xDiagram( xModel->getFirstChartDiagram() );
        rtl::Reference< Axis > xAxis;
        switch( eTitleType )
        {
@@ -230,7 +230,7 @@ rtl::Reference< Title > TitleHelper::createTitle(

    if(xTitled.is())
    {
        rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xModel ) );
        rtl::Reference< Diagram > xDiagram( xModel->getFirstChartDiagram() );

        xTitle = new ::chart::Title();