<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_all_tables_for_dataset(self, dataset_id, project_id=None):
 """Retrieve a list of all tables for the dataset. Parameters dataset_id : str The dataset to retrieve table names for project_id: str Unique ``str`` identifying the BigQuery project contains the dataset Returns ------- dict A ``dict`` containing tables key with all tables """

        project_id = self._get_project_id(project_id)

        result = self.bigquery.tables().list(
            projectId=project_id,
            datasetId=dataset_id).execute(num_retries=self.num_retries)

        page_token = result.get('nextPageToken')
        while page_token:
            res = self.bigquery.tables().list(
                projectId=project_id,
                datasetId=dataset_id,
                pageToken=page_token
            ).execute(num_retries=self.num_retries)
            page_token = res.get('nextPageToken')
            result['tables'] += res.get('tables', [])
        return result