code: def to_execution_plan(self,
                            domain,
                            default_screen,
                            start_date,
                            end_date):
          
          if self._domain is not GENERIC and self._domain is not domain:
              raise AssertionError(
                  "Attempted to compile Pipeline with domain {} to execution "
                  "plan with different domain {}.".format(self._domain, domain)
              )
  
          return ExecutionPlan(
              domain=domain,
              terms=self._prepare_graph_terms(default_screen),
              start_date=start_date,
              end_date=end_date,
          )
docs: Compile into an ExecutionPlan.
  
          Parameters
          ----------
          domain : zipline.pipeline.domain.Domain
              Domain on which the pipeline will be executed.
          default_screen : zipline.pipeline.term.Term
              Term to use as a screen if self.screen is None.
          all_dates : pd.DatetimeIndex
              A calendar of dates to use to calculate starts and ends for each
              term.
          start_date : pd.Timestamp
              The first date of requested output.
          end_date : pd.Timestamp
              The last date of requested output.
  
          Returns
          -------
          graph : zipline.pipeline.graph.ExecutionPlan
              Graph encoding term dependencies, including metadata about extra
              row requirements.