def METHOD_NAME():
    cosm = Cosm.de438()
    eme2k = cosm.frame("EME2000")
    assert eme2k.gm() == 398600.435392  # SPICE data, not GMAT data (398600.4415)
    assert eme2k.is_geoid()
    assert eme2k.equatorial_radius() == 6378.1363
    e = Epoch.system_now()
    orbit = Orbit.from_keplerian_altitude(
        400,
        ecc=1e-4,
        inc_deg=30.5,
        raan_deg=35.0,
        aop_deg=65.0,
        ta_deg=590,
        epoch=e,
        frame=eme2k,
    )
    assert orbit.period() == Unit.Second * 5553.623455582
    print(orbit)
    print(repr(orbit))
    # Define the SRP
    srp = SrpConfig(2.0)
    # Define the Drag
    drag = DragConfig(2.0)
    # Build a spacecraft
    sc = Spacecraft(
        orbit,
        dry_mass_kg=500.0,
        fuel_mass_kg=15.0,
        srp=srp,
        drag=drag,
    )
    print(sc)
    print(sc.orbit)
    # Check that we can pickle and dump the config of this spacecraft
    pkld = pickle.dumps(sc)
    print(sc.dumps())
    sc_loaded = Spacecraft.loads(sc.dumps())
    assert sc_loaded == sc
    unpkld = pickle.loads(pkld)
    assert unpkld == sc
    # NOTE: This does not return a pointer to the object, but a new object!
    # Therefore the equality _will_ fail!
    assert orbit == sc.orbit
    # But the printed information is identical
    assert f"{orbit}" == f"{sc.orbit}"
    # And the epochs match
    assert e.timedelta(sc.epoch) == Duration.zero()