<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_orbit(name, date):
 """Retrieve the orbit of a solar system object Args: name (str):
 The name of the body desired. For exact nomenclature, see :py:func:`available_planets` date (Date):
 Date at which the state vector will be extracted Return: Orbit: Orbit of the desired object, in the reference frame in which it is declared in the .bsp file """


    # On-demand Propagator and Frame generation

    if name not in [x.name for x in Bsp().top.list]:
        raise UnknownBodyError(name)

    for a, b in Bsp().top.steps(name):
        if b.name not in _propagator_cache:

            # Creation of the specific propagator class
            propagator = type(
                "%sBspPropagator" % b.name,
                (GenericBspPropagator,),
                {'src': a, 'dst': b}
            )

            # Retrieve informations for the central body. If unavailable, create a virtual body with
            # dummy values
            center = Pck()[b.full_name.title()]

            # Register the Orbit as a frame
            propagator.propagate(date).as_frame(b.name, center=center)
            _propagator_cache[b.name] = propagator

    if Bsp().top not in _propagator_cache:
        _propagator_cache[Bsp().top.name] = EarthPropagator()

    return _propagator_cache[name].propagate(date)