code: def make_model(self, policies=None, initial_conditions=True,
                     reverse_effects=False, model_name='indra_model'):
          ppa = PysbPreassembler(self.statements)
          self.processed_policies = self.process_policies(policies)
          ppa.replace_activities()
          if reverse_effects:
              ppa.add_reverse_effects()
          self.statements = ppa.statements
          self.model = Model()
          self.model.name = model_name
          self.agent_set = BaseAgentSet()
          self._monomers()
          for agent_name, agent in self.agent_set.items():
              m = Monomer(_n(agent_name), agent.sites, agent.site_states)
              m.site_annotations = agent.site_annotations
              self.model.add_component(m)
              for db_name, db_ref in agent.db_refs.items():
                  a = get_annotation(m, db_name, db_ref)
                  if a is not None:
                      self.model.add_annotation(a)
              for af in agent.active_forms:
                  self.model.add_annotation(Annotation(m, af,
                                                       'has_active_pattern'))
              for iaf in agent.inactive_forms:
                  self.model.add_annotation(Annotation(m, iaf,
                                                       'has_inactive_pattern'))
              for at in agent.activity_types:
                  act_site_cond = {at: 'active'}
                  self.model.add_annotation(Annotation(m, act_site_cond,
                                                       'has_active_pattern'))
                  inact_site_cond = {at: 'inactive'}
                  self.model.add_annotation(Annotation(m, inact_site_cond,
                                                       'has_inactive_pattern'))
          self._assemble()
          if initial_conditions:
              self.add_default_initial_conditions()
          return self.model