code: def _validate_report_extra(
      self, exceptions: list[ValidationError]
  ) -> None:
      extra: Optional[ReportScheduleExtra] = self._properties.get(
          "extra"
      )
      dashboard = self._properties.get("dashboard")
  
      if extra is None or dashboard is None:
          return
  
      dashboard_state = extra.get("dashboard")
      if not dashboard_state:
          return
  
      position_data = json.loads(dashboard.position_json or "{}")
      active_tabs = dashboard_state.get("activeTabs") or []
      anchor = dashboard_state.get("anchor")
      invalid_tab_ids = set(active_tabs) - set(position_data.keys())
      if anchor and anchor not in position_data:
          invalid_tab_ids.add(anchor)
      if invalid_tab_ids:
          exceptions.append(
              ValidationError(
                  _(
                      "Invalid tab ids: %s(tab_ids)",
                      tab_ids=str(invalid_tab_ids),
                  ),
                  "extra",
              )
          )
  
file_path: superset/superset/commands/report/create.py
imports: import json
  import logging
  from typing import Any, Optional
  from flask_babel import gettext
  from marshmallow import ValidationError
  from superset.commands.base import CreateMixin
  from superset.commands.report.base import BaseReportScheduleCommand
  from superset.commands.report.exceptions import DatabaseNotFoundValidationError, ReportScheduleAlertRequiredDatabaseValidationError, ReportScheduleCreateFailedError, ReportScheduleCreationMethodUniquenessValidationError, ReportScheduleInvalidError, ReportScheduleNameUniquenessValidationError, ReportScheduleRequiredTypeValidationError
  from superset.daos.database import DatabaseDAO
  from superset.daos.exceptions import DAOCreateFailedError
  from superset.daos.report import ReportScheduleDAO
  from superset.reports.models import ReportCreationMethod, ReportSchedule, ReportScheduleType
  from superset.reports.types import ReportScheduleExtra
label_desc: Use image node_id 4 for calling the CreateReportScheduleCommand obj's underlying member method code with example usage: obj._validate_report_extra(exceptions) without return types