code: def observe(self, stars, unc, ic=None):
          
          if ic is None:
              ic = get_ichrone('mist')
  
          if len(stars) > 2:
              raise NotImplementedError('No support yet for > 2 synthetic stars')
  
          mags = [ic(*s.pars)['{}_mag'.format(self.band)].values[0] for s in stars]
  
          d = stars[0].distance(stars[1])
  
          if d < self.resolution:
              mag = addmags(*mags) + unc*np.random.randn()
              sources = [Source(mag, unc, stars[0].separation, stars[0].pa,
                             relative=self.relative)]
          else:
              mags = np.array([m + unc*np.random.randn() for m in mags])
              if self.relative:
                  mags -= mags.min()
              sources = [Source(m, unc, s.separation, s.pa, relative=self.relative)
                          for m,s in zip(mags, stars)]
  
          for s in sources:
              self.add_source(s)
  
          self._set_reference()
docs: Creates and adds appropriate synthetic Source objects for list of stars (max 2 for now)