code: def apps(self):
          
          if self._apps is None:
              # Add modified settings values to the list of cfg params
              self.cfg.params.update(((s.name, s.value) for s in
                                      self.cfg.settings.values() if s.modified))
              self.cfg.settings = {}
              self._apps = OrderedDict()
              self._apps.update(self._build())
              if not self._apps:
                  return []
              # Load the configuration (command line and config file)
              self.load_config()
              kwargs = self._get_app_params()
              apps = self._apps
              self._apps = []
              for App, name, callable, cfg in self._iter_app(apps):
                  settings = self.cfg.settings
                  new_settings = {}
                  for key in cfg:
                      setting = settings[key].copy()
                      if setting.orig_name and setting.orig_name != setting.name:
                          setting.name = setting.orig_name
                      new_settings[setting.name] = setting
                  cfg.settings = new_settings
                  kwargs.update({'name': name, 'cfg': cfg, 'callable': callable})
                  if name == self.name:
                      params = kwargs.copy()
                      params['version'] = self.version
                  else:
                      params = kwargs
                  self._apps.append(App(**params))
          return self._apps
docs: List of :class:`Application` for this :class:`MultiApp`.
  
          The list is lazily loaded from the :meth:`build` method.