IBaseDataSetDesign dataSetDesign = session.getModelAdaptor( ) .adaptDataSet( dataSet );  if ( !useColumnHints ) { dataSetDesign.getResultSetHints( ).clear( ); } if ( !useFilters ) { dataSetDesign.getFilters( ).clear( ); } if ( !( dataSet instanceof JointDataSetHandle ) ) { IBaseDataSourceDesign dataSourceDesign = session.getModelAdaptor( ) .adaptDataSource( dataSet.getDataSource( ) ); session.defineDataSource( dataSourceDesign );  } if ( dataSet instanceof JointDataSetHandle ) { defineSourceDataSets( dataSet, dataSetDesign ); } session.defineDataSet( dataSetDesign ); return dataSetDesign;
return getDataSetDesign( dataSet, useColumnHints, useFilters, session );
	public final IBaseDataSetDesign getDataSetDesign( DataSetHandle dataSet,			boolean useColumnHints, boolean useFilters ) throws BirtException	{		if ( dataSet != null )		{			DataRequestSession session = getDataRequestSession( dataSet );			IBaseDataSetDesign dataSetDesign = session.getModelAdaptor( )					.adaptDataSet( dataSet );			if ( !useColumnHints )			{				dataSetDesign.getResultSetHints( ).clear( );			}			if ( !useFilters )			{				dataSetDesign.getFilters( ).clear( );			}			if ( !( dataSet instanceof JointDataSetHandle ) )			{				IBaseDataSourceDesign dataSourceDesign = session.getModelAdaptor( )						.adaptDataSource( dataSet.getDataSource( ) );				session.defineDataSource( dataSourceDesign );			}			if ( dataSet instanceof JointDataSetHandle )			{				defineSourceDataSets( dataSet, dataSetDesign );			}			session.defineDataSet( dataSetDesign );			return dataSetDesign;		}		return null;	}