code: def _compute_output_layer_expected(self):
          
          # Actually, an IF can produce maximum 6 layers, by default.
          expected = [
              layer_purpose_exposure_summary['key'],  # 1
              layer_purpose_aggregate_hazard_impacted['key'],  # 2
              layer_purpose_aggregation_summary['key'],  # 3
              layer_purpose_analysis_impacted['key'],  # 4
              layer_purpose_exposure_summary_table['key'],  # 5
              layer_purpose_profiling['key'],  # 6
          ]
          if is_raster_layer(self.exposure):
              if self.exposure.keywords.get('layer_mode') == 'continuous':
                  # If the exposure is a continuous raster, we can't provide the
                  # exposure impacted layer.
                  expected.remove(layer_purpose_exposure_summary['key'])
  
          if not self.exposure.keywords.get('classification'):
              # If the exposure doesn't have a classification, such as population
              # census layer, we can't provide an exposure breakdown layer.
              expected.remove(layer_purpose_exposure_summary_table['key'])
  
          # We add any layers produced by pre-processors
          for preprocessor in self._preprocessors:
              if preprocessor['output'].get('type') == 'layer':
                  expected.append(preprocessor['output'].get('value')['key'])
  
          return expected
docs: Compute output layers expected that the IF will produce.
  
          Be careful when you call this function. It's a private function, better
          to use the public function `output_layers_expected()`.
  
          :return: List of expected layer keys.
          :rtype: list