code: def setup(self, builder: Builder):
          
          self.config = builder.configuration
  
          self.with_common_random_numbers = bool(self.config.randomness.key_columns)
          self.register = builder.randomness.register_simulants
          if (self.with_common_random_numbers
                  and not ['entrance_time', 'age'] == self.config.randomness.key_columns):
              raise ValueError("If running with CRN, you must specify ['entrance_time', 'age'] as"
                               "the randomness key columns.")
  
          self.age_randomness = builder.randomness.get_stream('age_initialization',
                                                              for_initialization=self.with_common_random_numbers)
          self.sex_randomness = builder.randomness.get_stream('sex_initialization')
  
          columns_created = ['age', 'sex', 'alive', 'entrance_time']
          builder.population.initializes_simulants(self.on_initialize_simulants,
                                                   creates_columns=columns_created)
  
          self.population_view = builder.population.get_view(columns_created)
  
          builder.event.register_listener('time_step', self.age_simulants)
docs: Performs this component's simulation setup.
  
          The ``setup`` method is automatically called by the simulation
          framework. The framework passes in a ``builder`` object which
          provides access to a variety of framework subsystems and metadata.
  
          Parameters
          ----------
          builder :
              Access to simulation tools and subsystems.