### Question:
AbstractDataSet implements PropertyChangeListener, DataSetObservable { @SuppressWarnings("unchecked") protected <DataSetType> DataSetType getDataSet() { if (isDataSetNotInitialized) { updateDataSet(); isDataSetNotInitialized = false; } return (DataSetType) dataSet; } @SuppressWarnings("unchecked")  AbstractDataSet(RefreshableItemPresentationModelFactory factory, AbstractGetSet<?> getSet); RefreshableItemPresentationModel newRefreshableItemPresentationModel(int itemViewType); @Override void propertyChanged();  }### Answer:
@Test public void givenGetDataSet_whenGetDataSetAgain_thenReturnSameInstance() { GetSet getSet = new GetSet(new Object()); DataSet dataSetProperty = new DataSet(getSet); Object dataSetFirstTime = dataSetProperty.getDataSet(); Object dataSetSecondTime = dataSetProperty.getDataSet(); assertSame(dataSetSecondTime, dataSetFirstTime); }