code: def crawl_dataless(sofar, gens):
      
      new_gen = set([])
      all_ext_parents = set()
      for s in gens[-1]:
          all_ext_parents.update(s.extended_parents)
  
      for p in all_ext_parents:
          if p._random is not None and not p.observed:
              if len(p.extended_children - sofar) == 0:
                  new_gen.add(p)
      if len(new_gen) == 0:
          return sofar, gens
      else:
          sofar |= new_gen
          gens.append(new_gen)
          return crawl_dataless(sofar, gens)
docs: Crawls out from v to find the biggest dataless submodel containing v.
      TODO: Let MCMC start the crawl from its last generation. It doesn't
      matter that there won't be one contiguous group.