def METHOD_NAME():
    testing.init_blank_db_for_testing(verbose=True)
    generator = tangos.testing.simulation_generator.SimulationGeneratorForTests()
    generator.add_timestep()
    ts1_h1, ts1_h2, ts1_h3, ts1_h4, ts1_h5 = generator.add_objects_to_timestep(5)
    ts1_h1['testlink'] = ts1_h2, ts1_h3, ts1_h4, ts1_h5
    ts1_h1['testlink_univalued'] = ts1_h2
    ts1_h5['nonexistent_link'] = 0 # This is just to generate the results
    ts1_h2['testval'] = 1.0
    ts1_h2['testvalpartial'] = 1.0
    ts1_h3['testval'] = 2.0
    ts1_h3['testvalpartial'] = 2.0
    ts1_h4['testval'] = 3.0
    ts1_h5['testval'] = 0.0
    ts1_h2['testval2'] = 10.0
    ts1_h3['testval2'] = 20.0
    ts1_h4['testval2'] = 30.0
    ts1_h5['testval2'] = 40.0
    generator.add_timestep()
    ts2_h1, ts2_h2, ts2_h3 = generator.add_objects_to_timestep(3)
    ts2_h1['testval'] = 2.0
    ts2_h2['testval'] = 100.0
    generator.link_last_halos_using_mapping({2: 1, 3: 2})
    generator_sim2 = tangos.testing.simulation_generator.SimulationGeneratorForTests("sim2")
    # this is added to offer red herring links that should be ignored
    # We add a timestep and links that create an illusory past, but actually it's in another simulation
    # so should be ignored. It triggers a problem with the original implementation of find_progenitor.
    generator_sim2.add_timestep()
    s2_h1, s2_h2 = generator_sim2.add_objects_to_timestep(2)
    generator_sim2.link_last_halos_across_using_mapping(generator, {1: 1, 2: 2})
    s2_h2['testval'] = 1e6
    # end of red herring
    generator.add_timestep()
    ts3_h1, ts3_h2 = generator.add_objects_to_timestep(2)
    generator.link_last_halos()
    ts3_h1['testval'] = -1.0
    ts3_h2['testval'] = 1000.0
    db.core.get_default_session().commit()