def METHOD_NAME():
    """
    Illustration of adding Basilisk Python modules to a task
    """
    #  Create a sim module as an empty container
    scSim = SimulationBaseClass.SimBaseClass()
    #  create the simulation process
    dynProcess = scSim.CreateNewProcess("dynamicsProcess")
    # create the dynamics task and specify the integration update time
    dynProcess.addTask(scSim.CreateNewTask("dynamicsTask", macros.sec2nano(5.0)))
    # create copies of the Basilisk modules
    mod1 = cModuleTemplate.cModuleTemplate()
    mod1.ModelTag = "cModule1"
    scSim.AddModelToTask("dynamicsTask", mod1, 0)
    mod2 = cppModuleTemplate.CppModuleTemplate()
    mod2.ModelTag = "cppModule2"
    scSim.AddModelToTask("dynamicsTask", mod2, 5)
    mod3 = cModuleTemplate.cModuleTemplate()
    mod3.ModelTag = "cModule3"
    scSim.AddModelToTask("dynamicsTask", mod3, 15)
    # The following is a Python module, which has a higher priority
    # then some of the C++/C modules. Observe in the script output
    # how the Python module is called in the order that respects
    # its priority with respect to the rest of the modules.
    mod4 = TestPythonModule()
    mod4.ModelTag = "pythonModule4"
    scSim.AddModelToTask("dynamicsTask", mod4, 10)
    mod2.dataInMsg.subscribeTo(mod4.dataOutMsg)
    mod4.dataInMsg.subscribeTo(mod3.dataOutMsg)
    # Set up recording
    mod2MsgRecorder = mod2.dataOutMsg.recorder()
    scSim.AddModelToTask("dynamicsTask", mod2MsgRecorder)
    #  initialize Simulation:
    scSim.InitializeSimulation()
    print("InitializeSimulation() completed...")
    #   configure a simulation stop time and execute the simulation run
    scSim.ConfigureStopTime(macros.sec2nano(5.0))
    scSim.ExecuteSimulation()
    print("Recorded mod2.dataOutMsg.dataVector: ", mod2MsgRecorder.dataVector)
    return