/*
 * Copyright (c) 2024. Helge Eichhorn and the LOX contributors
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
 */

// Auto-generated by `lox-gen`. Do not edit!

use crate::frames::{
    BodyFixed, CoordinateSystem, FrameTransformationProvider, Icrf, ReferenceFrame, TryToFrame,
};
use crate::python::{PyFrame, PyState};
use crate::states::State;
use lox_bodies::python::PyBody;
use lox_bodies::*;
use lox_time::python::time::PyTime;
use lox_time::python::ut1::{PyDeltaUt1Provider, PyNoOpOffsetProvider, PyUt1Provider};
use pyo3::exceptions::PyValueError;
use pyo3::{Bound, PyErr, PyResult};
use std::str::FromStr;
impl<T> TryToFrame<Icrf, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, Icrf>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: Icrf,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, Icrf>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => Ok(self.0.with_frame(frame)),
            PyFrame::Sun => self
                .0
                .with_frame(BodyFixed(Sun))
                .try_to_frame(frame, provider),
            PyFrame::Mercury => self
                .0
                .with_frame(BodyFixed(Mercury))
                .try_to_frame(frame, provider),
            PyFrame::Venus => self
                .0
                .with_frame(BodyFixed(Venus))
                .try_to_frame(frame, provider),
            PyFrame::Earth => self
                .0
                .with_frame(BodyFixed(Earth))
                .try_to_frame(frame, provider),
            PyFrame::Mars => self
                .0
                .with_frame(BodyFixed(Mars))
                .try_to_frame(frame, provider),
            PyFrame::Jupiter => self
                .0
                .with_frame(BodyFixed(Jupiter))
                .try_to_frame(frame, provider),
            PyFrame::Saturn => self
                .0
                .with_frame(BodyFixed(Saturn))
                .try_to_frame(frame, provider),
            PyFrame::Uranus => self
                .0
                .with_frame(BodyFixed(Uranus))
                .try_to_frame(frame, provider),
            PyFrame::Neptune => self
                .0
                .with_frame(BodyFixed(Neptune))
                .try_to_frame(frame, provider),
            PyFrame::Pluto => self
                .0
                .with_frame(BodyFixed(Pluto))
                .try_to_frame(frame, provider),
            PyFrame::Moon => self
                .0
                .with_frame(BodyFixed(Moon))
                .try_to_frame(frame, provider),
            PyFrame::Phobos => self
                .0
                .with_frame(BodyFixed(Phobos))
                .try_to_frame(frame, provider),
            PyFrame::Deimos => self
                .0
                .with_frame(BodyFixed(Deimos))
                .try_to_frame(frame, provider),
            PyFrame::Io => self
                .0
                .with_frame(BodyFixed(Io))
                .try_to_frame(frame, provider),
            PyFrame::Europa => self
                .0
                .with_frame(BodyFixed(Europa))
                .try_to_frame(frame, provider),
            PyFrame::Ganymede => self
                .0
                .with_frame(BodyFixed(Ganymede))
                .try_to_frame(frame, provider),
            PyFrame::Callisto => self
                .0
                .with_frame(BodyFixed(Callisto))
                .try_to_frame(frame, provider),
            PyFrame::Amalthea => self
                .0
                .with_frame(BodyFixed(Amalthea))
                .try_to_frame(frame, provider),
            PyFrame::Himalia => self
                .0
                .with_frame(BodyFixed(Himalia))
                .try_to_frame(frame, provider),
            PyFrame::Elara => self
                .0
                .with_frame(BodyFixed(Elara))
                .try_to_frame(frame, provider),
            PyFrame::Pasiphae => self
                .0
                .with_frame(BodyFixed(Pasiphae))
                .try_to_frame(frame, provider),
            PyFrame::Sinope => self
                .0
                .with_frame(BodyFixed(Sinope))
                .try_to_frame(frame, provider),
            PyFrame::Lysithea => self
                .0
                .with_frame(BodyFixed(Lysithea))
                .try_to_frame(frame, provider),
            PyFrame::Carme => self
                .0
                .with_frame(BodyFixed(Carme))
                .try_to_frame(frame, provider),
            PyFrame::Ananke => self
                .0
                .with_frame(BodyFixed(Ananke))
                .try_to_frame(frame, provider),
            PyFrame::Leda => self
                .0
                .with_frame(BodyFixed(Leda))
                .try_to_frame(frame, provider),
            PyFrame::Thebe => self
                .0
                .with_frame(BodyFixed(Thebe))
                .try_to_frame(frame, provider),
            PyFrame::Adrastea => self
                .0
                .with_frame(BodyFixed(Adrastea))
                .try_to_frame(frame, provider),
            PyFrame::Metis => self
                .0
                .with_frame(BodyFixed(Metis))
                .try_to_frame(frame, provider),
            PyFrame::Callirrhoe => self
                .0
                .with_frame(BodyFixed(Callirrhoe))
                .try_to_frame(frame, provider),
            PyFrame::Themisto => self
                .0
                .with_frame(BodyFixed(Themisto))
                .try_to_frame(frame, provider),
            PyFrame::Magaclite => self
                .0
                .with_frame(BodyFixed(Magaclite))
                .try_to_frame(frame, provider),
            PyFrame::Taygete => self
                .0
                .with_frame(BodyFixed(Taygete))
                .try_to_frame(frame, provider),
            PyFrame::Chaldene => self
                .0
                .with_frame(BodyFixed(Chaldene))
                .try_to_frame(frame, provider),
            PyFrame::Harpalyke => self
                .0
                .with_frame(BodyFixed(Harpalyke))
                .try_to_frame(frame, provider),
            PyFrame::Kalyke => self
                .0
                .with_frame(BodyFixed(Kalyke))
                .try_to_frame(frame, provider),
            PyFrame::Iocaste => self
                .0
                .with_frame(BodyFixed(Iocaste))
                .try_to_frame(frame, provider),
            PyFrame::Erinome => self
                .0
                .with_frame(BodyFixed(Erinome))
                .try_to_frame(frame, provider),
            PyFrame::Isonoe => self
                .0
                .with_frame(BodyFixed(Isonoe))
                .try_to_frame(frame, provider),
            PyFrame::Praxidike => self
                .0
                .with_frame(BodyFixed(Praxidike))
                .try_to_frame(frame, provider),
            PyFrame::Autonoe => self
                .0
                .with_frame(BodyFixed(Autonoe))
                .try_to_frame(frame, provider),
            PyFrame::Thyone => self
                .0
                .with_frame(BodyFixed(Thyone))
                .try_to_frame(frame, provider),
            PyFrame::Hermippe => self
                .0
                .with_frame(BodyFixed(Hermippe))
                .try_to_frame(frame, provider),
            PyFrame::Aitne => self
                .0
                .with_frame(BodyFixed(Aitne))
                .try_to_frame(frame, provider),
            PyFrame::Eurydome => self
                .0
                .with_frame(BodyFixed(Eurydome))
                .try_to_frame(frame, provider),
            PyFrame::Euanthe => self
                .0
                .with_frame(BodyFixed(Euanthe))
                .try_to_frame(frame, provider),
            PyFrame::Euporie => self
                .0
                .with_frame(BodyFixed(Euporie))
                .try_to_frame(frame, provider),
            PyFrame::Orthosie => self
                .0
                .with_frame(BodyFixed(Orthosie))
                .try_to_frame(frame, provider),
            PyFrame::Sponde => self
                .0
                .with_frame(BodyFixed(Sponde))
                .try_to_frame(frame, provider),
            PyFrame::Kale => self
                .0
                .with_frame(BodyFixed(Kale))
                .try_to_frame(frame, provider),
            PyFrame::Pasithee => self
                .0
                .with_frame(BodyFixed(Pasithee))
                .try_to_frame(frame, provider),
            PyFrame::Hegemone => self
                .0
                .with_frame(BodyFixed(Hegemone))
                .try_to_frame(frame, provider),
            PyFrame::Mneme => self
                .0
                .with_frame(BodyFixed(Mneme))
                .try_to_frame(frame, provider),
            PyFrame::Aoede => self
                .0
                .with_frame(BodyFixed(Aoede))
                .try_to_frame(frame, provider),
            PyFrame::Thelxinoe => self
                .0
                .with_frame(BodyFixed(Thelxinoe))
                .try_to_frame(frame, provider),
            PyFrame::Arche => self
                .0
                .with_frame(BodyFixed(Arche))
                .try_to_frame(frame, provider),
            PyFrame::Kallichore => self
                .0
                .with_frame(BodyFixed(Kallichore))
                .try_to_frame(frame, provider),
            PyFrame::Helike => self
                .0
                .with_frame(BodyFixed(Helike))
                .try_to_frame(frame, provider),
            PyFrame::Carpo => self
                .0
                .with_frame(BodyFixed(Carpo))
                .try_to_frame(frame, provider),
            PyFrame::Eukelade => self
                .0
                .with_frame(BodyFixed(Eukelade))
                .try_to_frame(frame, provider),
            PyFrame::Cyllene => self
                .0
                .with_frame(BodyFixed(Cyllene))
                .try_to_frame(frame, provider),
            PyFrame::Kore => self
                .0
                .with_frame(BodyFixed(Kore))
                .try_to_frame(frame, provider),
            PyFrame::Herse => self
                .0
                .with_frame(BodyFixed(Herse))
                .try_to_frame(frame, provider),
            PyFrame::Dia => self
                .0
                .with_frame(BodyFixed(Dia))
                .try_to_frame(frame, provider),
            PyFrame::Mimas => self
                .0
                .with_frame(BodyFixed(Mimas))
                .try_to_frame(frame, provider),
            PyFrame::Enceladus => self
                .0
                .with_frame(BodyFixed(Enceladus))
                .try_to_frame(frame, provider),
            PyFrame::Tethys => self
                .0
                .with_frame(BodyFixed(Tethys))
                .try_to_frame(frame, provider),
            PyFrame::Dione => self
                .0
                .with_frame(BodyFixed(Dione))
                .try_to_frame(frame, provider),
            PyFrame::Rhea => self
                .0
                .with_frame(BodyFixed(Rhea))
                .try_to_frame(frame, provider),
            PyFrame::Titan => self
                .0
                .with_frame(BodyFixed(Titan))
                .try_to_frame(frame, provider),
            PyFrame::Hyperion => self
                .0
                .with_frame(BodyFixed(Hyperion))
                .try_to_frame(frame, provider),
            PyFrame::Iapetus => self
                .0
                .with_frame(BodyFixed(Iapetus))
                .try_to_frame(frame, provider),
            PyFrame::Phoebe => self
                .0
                .with_frame(BodyFixed(Phoebe))
                .try_to_frame(frame, provider),
            PyFrame::Janus => self
                .0
                .with_frame(BodyFixed(Janus))
                .try_to_frame(frame, provider),
            PyFrame::Epimetheus => self
                .0
                .with_frame(BodyFixed(Epimetheus))
                .try_to_frame(frame, provider),
            PyFrame::Helene => self
                .0
                .with_frame(BodyFixed(Helene))
                .try_to_frame(frame, provider),
            PyFrame::Telesto => self
                .0
                .with_frame(BodyFixed(Telesto))
                .try_to_frame(frame, provider),
            PyFrame::Calypso => self
                .0
                .with_frame(BodyFixed(Calypso))
                .try_to_frame(frame, provider),
            PyFrame::Atlas => self
                .0
                .with_frame(BodyFixed(Atlas))
                .try_to_frame(frame, provider),
            PyFrame::Prometheus => self
                .0
                .with_frame(BodyFixed(Prometheus))
                .try_to_frame(frame, provider),
            PyFrame::Pandora => self
                .0
                .with_frame(BodyFixed(Pandora))
                .try_to_frame(frame, provider),
            PyFrame::Pan => self
                .0
                .with_frame(BodyFixed(Pan))
                .try_to_frame(frame, provider),
            PyFrame::Ymir => self
                .0
                .with_frame(BodyFixed(Ymir))
                .try_to_frame(frame, provider),
            PyFrame::Paaliaq => self
                .0
                .with_frame(BodyFixed(Paaliaq))
                .try_to_frame(frame, provider),
            PyFrame::Tarvos => self
                .0
                .with_frame(BodyFixed(Tarvos))
                .try_to_frame(frame, provider),
            PyFrame::Ijiraq => self
                .0
                .with_frame(BodyFixed(Ijiraq))
                .try_to_frame(frame, provider),
            PyFrame::Suttungr => self
                .0
                .with_frame(BodyFixed(Suttungr))
                .try_to_frame(frame, provider),
            PyFrame::Kiviuq => self
                .0
                .with_frame(BodyFixed(Kiviuq))
                .try_to_frame(frame, provider),
            PyFrame::Mundilfari => self
                .0
                .with_frame(BodyFixed(Mundilfari))
                .try_to_frame(frame, provider),
            PyFrame::Albiorix => self
                .0
                .with_frame(BodyFixed(Albiorix))
                .try_to_frame(frame, provider),
            PyFrame::Skathi => self
                .0
                .with_frame(BodyFixed(Skathi))
                .try_to_frame(frame, provider),
            PyFrame::Erriapus => self
                .0
                .with_frame(BodyFixed(Erriapus))
                .try_to_frame(frame, provider),
            PyFrame::Siarnaq => self
                .0
                .with_frame(BodyFixed(Siarnaq))
                .try_to_frame(frame, provider),
            PyFrame::Thrymr => self
                .0
                .with_frame(BodyFixed(Thrymr))
                .try_to_frame(frame, provider),
            PyFrame::Narvi => self
                .0
                .with_frame(BodyFixed(Narvi))
                .try_to_frame(frame, provider),
            PyFrame::Methone => self
                .0
                .with_frame(BodyFixed(Methone))
                .try_to_frame(frame, provider),
            PyFrame::Pallene => self
                .0
                .with_frame(BodyFixed(Pallene))
                .try_to_frame(frame, provider),
            PyFrame::Polydeuces => self
                .0
                .with_frame(BodyFixed(Polydeuces))
                .try_to_frame(frame, provider),
            PyFrame::Daphnis => self
                .0
                .with_frame(BodyFixed(Daphnis))
                .try_to_frame(frame, provider),
            PyFrame::Aegir => self
                .0
                .with_frame(BodyFixed(Aegir))
                .try_to_frame(frame, provider),
            PyFrame::Bebhionn => self
                .0
                .with_frame(BodyFixed(Bebhionn))
                .try_to_frame(frame, provider),
            PyFrame::Bergelmir => self
                .0
                .with_frame(BodyFixed(Bergelmir))
                .try_to_frame(frame, provider),
            PyFrame::Bestla => self
                .0
                .with_frame(BodyFixed(Bestla))
                .try_to_frame(frame, provider),
            PyFrame::Farbauti => self
                .0
                .with_frame(BodyFixed(Farbauti))
                .try_to_frame(frame, provider),
            PyFrame::Fenrir => self
                .0
                .with_frame(BodyFixed(Fenrir))
                .try_to_frame(frame, provider),
            PyFrame::Fornjot => self
                .0
                .with_frame(BodyFixed(Fornjot))
                .try_to_frame(frame, provider),
            PyFrame::Hati => self
                .0
                .with_frame(BodyFixed(Hati))
                .try_to_frame(frame, provider),
            PyFrame::Hyrrokkin => self
                .0
                .with_frame(BodyFixed(Hyrrokkin))
                .try_to_frame(frame, provider),
            PyFrame::Kari => self
                .0
                .with_frame(BodyFixed(Kari))
                .try_to_frame(frame, provider),
            PyFrame::Loge => self
                .0
                .with_frame(BodyFixed(Loge))
                .try_to_frame(frame, provider),
            PyFrame::Skoll => self
                .0
                .with_frame(BodyFixed(Skoll))
                .try_to_frame(frame, provider),
            PyFrame::Surtur => self
                .0
                .with_frame(BodyFixed(Surtur))
                .try_to_frame(frame, provider),
            PyFrame::Anthe => self
                .0
                .with_frame(BodyFixed(Anthe))
                .try_to_frame(frame, provider),
            PyFrame::Jarnsaxa => self
                .0
                .with_frame(BodyFixed(Jarnsaxa))
                .try_to_frame(frame, provider),
            PyFrame::Greip => self
                .0
                .with_frame(BodyFixed(Greip))
                .try_to_frame(frame, provider),
            PyFrame::Tarqeq => self
                .0
                .with_frame(BodyFixed(Tarqeq))
                .try_to_frame(frame, provider),
            PyFrame::Aegaeon => self
                .0
                .with_frame(BodyFixed(Aegaeon))
                .try_to_frame(frame, provider),
            PyFrame::Ariel => self
                .0
                .with_frame(BodyFixed(Ariel))
                .try_to_frame(frame, provider),
            PyFrame::Umbriel => self
                .0
                .with_frame(BodyFixed(Umbriel))
                .try_to_frame(frame, provider),
            PyFrame::Titania => self
                .0
                .with_frame(BodyFixed(Titania))
                .try_to_frame(frame, provider),
            PyFrame::Oberon => self
                .0
                .with_frame(BodyFixed(Oberon))
                .try_to_frame(frame, provider),
            PyFrame::Miranda => self
                .0
                .with_frame(BodyFixed(Miranda))
                .try_to_frame(frame, provider),
            PyFrame::Cordelia => self
                .0
                .with_frame(BodyFixed(Cordelia))
                .try_to_frame(frame, provider),
            PyFrame::Ophelia => self
                .0
                .with_frame(BodyFixed(Ophelia))
                .try_to_frame(frame, provider),
            PyFrame::Bianca => self
                .0
                .with_frame(BodyFixed(Bianca))
                .try_to_frame(frame, provider),
            PyFrame::Cressida => self
                .0
                .with_frame(BodyFixed(Cressida))
                .try_to_frame(frame, provider),
            PyFrame::Desdemona => self
                .0
                .with_frame(BodyFixed(Desdemona))
                .try_to_frame(frame, provider),
            PyFrame::Juliet => self
                .0
                .with_frame(BodyFixed(Juliet))
                .try_to_frame(frame, provider),
            PyFrame::Portia => self
                .0
                .with_frame(BodyFixed(Portia))
                .try_to_frame(frame, provider),
            PyFrame::Rosalind => self
                .0
                .with_frame(BodyFixed(Rosalind))
                .try_to_frame(frame, provider),
            PyFrame::Belinda => self
                .0
                .with_frame(BodyFixed(Belinda))
                .try_to_frame(frame, provider),
            PyFrame::Puck => self
                .0
                .with_frame(BodyFixed(Puck))
                .try_to_frame(frame, provider),
            PyFrame::Caliban => self
                .0
                .with_frame(BodyFixed(Caliban))
                .try_to_frame(frame, provider),
            PyFrame::Sycorax => self
                .0
                .with_frame(BodyFixed(Sycorax))
                .try_to_frame(frame, provider),
            PyFrame::Prospero => self
                .0
                .with_frame(BodyFixed(Prospero))
                .try_to_frame(frame, provider),
            PyFrame::Setebos => self
                .0
                .with_frame(BodyFixed(Setebos))
                .try_to_frame(frame, provider),
            PyFrame::Stephano => self
                .0
                .with_frame(BodyFixed(Stephano))
                .try_to_frame(frame, provider),
            PyFrame::Trinculo => self
                .0
                .with_frame(BodyFixed(Trinculo))
                .try_to_frame(frame, provider),
            PyFrame::Francisco => self
                .0
                .with_frame(BodyFixed(Francisco))
                .try_to_frame(frame, provider),
            PyFrame::Margaret => self
                .0
                .with_frame(BodyFixed(Margaret))
                .try_to_frame(frame, provider),
            PyFrame::Ferdinand => self
                .0
                .with_frame(BodyFixed(Ferdinand))
                .try_to_frame(frame, provider),
            PyFrame::Perdita => self
                .0
                .with_frame(BodyFixed(Perdita))
                .try_to_frame(frame, provider),
            PyFrame::Mab => self
                .0
                .with_frame(BodyFixed(Mab))
                .try_to_frame(frame, provider),
            PyFrame::Cupid => self
                .0
                .with_frame(BodyFixed(Cupid))
                .try_to_frame(frame, provider),
            PyFrame::Triton => self
                .0
                .with_frame(BodyFixed(Triton))
                .try_to_frame(frame, provider),
            PyFrame::Nereid => self
                .0
                .with_frame(BodyFixed(Nereid))
                .try_to_frame(frame, provider),
            PyFrame::Naiad => self
                .0
                .with_frame(BodyFixed(Naiad))
                .try_to_frame(frame, provider),
            PyFrame::Thalassa => self
                .0
                .with_frame(BodyFixed(Thalassa))
                .try_to_frame(frame, provider),
            PyFrame::Despina => self
                .0
                .with_frame(BodyFixed(Despina))
                .try_to_frame(frame, provider),
            PyFrame::Galatea => self
                .0
                .with_frame(BodyFixed(Galatea))
                .try_to_frame(frame, provider),
            PyFrame::Larissa => self
                .0
                .with_frame(BodyFixed(Larissa))
                .try_to_frame(frame, provider),
            PyFrame::Proteus => self
                .0
                .with_frame(BodyFixed(Proteus))
                .try_to_frame(frame, provider),
            PyFrame::Halimede => self
                .0
                .with_frame(BodyFixed(Halimede))
                .try_to_frame(frame, provider),
            PyFrame::Psamathe => self
                .0
                .with_frame(BodyFixed(Psamathe))
                .try_to_frame(frame, provider),
            PyFrame::Sao => self
                .0
                .with_frame(BodyFixed(Sao))
                .try_to_frame(frame, provider),
            PyFrame::Laomedeia => self
                .0
                .with_frame(BodyFixed(Laomedeia))
                .try_to_frame(frame, provider),
            PyFrame::Neso => self
                .0
                .with_frame(BodyFixed(Neso))
                .try_to_frame(frame, provider),
            PyFrame::Charon => self
                .0
                .with_frame(BodyFixed(Charon))
                .try_to_frame(frame, provider),
            PyFrame::Nix => self
                .0
                .with_frame(BodyFixed(Nix))
                .try_to_frame(frame, provider),
            PyFrame::Hydra => self
                .0
                .with_frame(BodyFixed(Hydra))
                .try_to_frame(frame, provider),
            PyFrame::Kerberos => self
                .0
                .with_frame(BodyFixed(Kerberos))
                .try_to_frame(frame, provider),
            PyFrame::Styx => self
                .0
                .with_frame(BodyFixed(Styx))
                .try_to_frame(frame, provider),
            PyFrame::Gaspra => self
                .0
                .with_frame(BodyFixed(Gaspra))
                .try_to_frame(frame, provider),
            PyFrame::Ida => self
                .0
                .with_frame(BodyFixed(Ida))
                .try_to_frame(frame, provider),
            PyFrame::Dactyl => self
                .0
                .with_frame(BodyFixed(Dactyl))
                .try_to_frame(frame, provider),
            PyFrame::Ceres => self
                .0
                .with_frame(BodyFixed(Ceres))
                .try_to_frame(frame, provider),
            PyFrame::Pallas => self
                .0
                .with_frame(BodyFixed(Pallas))
                .try_to_frame(frame, provider),
            PyFrame::Vesta => self
                .0
                .with_frame(BodyFixed(Vesta))
                .try_to_frame(frame, provider),
            PyFrame::Psyche => self
                .0
                .with_frame(BodyFixed(Psyche))
                .try_to_frame(frame, provider),
            PyFrame::Lutetia => self
                .0
                .with_frame(BodyFixed(Lutetia))
                .try_to_frame(frame, provider),
            PyFrame::Kleopatra => self
                .0
                .with_frame(BodyFixed(Kleopatra))
                .try_to_frame(frame, provider),
            PyFrame::Eros => self
                .0
                .with_frame(BodyFixed(Eros))
                .try_to_frame(frame, provider),
            PyFrame::Davida => self
                .0
                .with_frame(BodyFixed(Davida))
                .try_to_frame(frame, provider),
            PyFrame::Mathilde => self
                .0
                .with_frame(BodyFixed(Mathilde))
                .try_to_frame(frame, provider),
            PyFrame::Steins => self
                .0
                .with_frame(BodyFixed(Steins))
                .try_to_frame(frame, provider),
            PyFrame::Braille => self
                .0
                .with_frame(BodyFixed(Braille))
                .try_to_frame(frame, provider),
            PyFrame::WilsonHarrington => self
                .0
                .with_frame(BodyFixed(WilsonHarrington))
                .try_to_frame(frame, provider),
            PyFrame::Toutatis => self
                .0
                .with_frame(BodyFixed(Toutatis))
                .try_to_frame(frame, provider),
            PyFrame::Itokawa => self
                .0
                .with_frame(BodyFixed(Itokawa))
                .try_to_frame(frame, provider),
            PyFrame::Bennu => self
                .0
                .with_frame(BodyFixed(Bennu))
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Sun>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Sun>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Sun>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Sun>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Sun => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Mercury>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Mercury>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Mercury>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Mercury>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Mercury => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Venus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Venus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Venus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Venus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Venus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Earth>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Earth>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Earth>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Earth>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Earth => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Mars>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Mars>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Mars>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Mars>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Mars => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Jupiter>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Jupiter>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Jupiter>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Jupiter>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Jupiter => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Saturn>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Saturn>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Saturn>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Saturn>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Saturn => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Uranus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Uranus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Uranus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Uranus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Uranus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Neptune>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Neptune>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Neptune>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Neptune>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Neptune => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Pluto>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Pluto>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Pluto>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Pluto>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Pluto => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Moon>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Moon>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Moon>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Moon>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Moon => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Phobos>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Phobos>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Phobos>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Phobos>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Phobos => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Deimos>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Deimos>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Deimos>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Deimos>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Deimos => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Io>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Io>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Io>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Io>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Io => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Europa>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Europa>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Europa>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Europa>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Europa => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ganymede>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ganymede>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ganymede>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ganymede>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ganymede => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Callisto>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Callisto>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Callisto>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Callisto>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Callisto => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Amalthea>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Amalthea>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Amalthea>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Amalthea>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Amalthea => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Himalia>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Himalia>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Himalia>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Himalia>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Himalia => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Elara>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Elara>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Elara>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Elara>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Elara => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Pasiphae>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Pasiphae>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Pasiphae>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Pasiphae>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Pasiphae => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Sinope>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Sinope>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Sinope>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Sinope>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Sinope => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Lysithea>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Lysithea>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Lysithea>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Lysithea>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Lysithea => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Carme>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Carme>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Carme>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Carme>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Carme => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ananke>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ananke>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ananke>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ananke>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ananke => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Leda>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Leda>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Leda>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Leda>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Leda => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Thebe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Thebe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Thebe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Thebe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Thebe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Adrastea>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Adrastea>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Adrastea>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Adrastea>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Adrastea => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Metis>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Metis>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Metis>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Metis>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Metis => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Callirrhoe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Callirrhoe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Callirrhoe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Callirrhoe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Callirrhoe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Themisto>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Themisto>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Themisto>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Themisto>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Themisto => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Magaclite>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Magaclite>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Magaclite>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Magaclite>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Magaclite => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Taygete>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Taygete>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Taygete>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Taygete>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Taygete => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Chaldene>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Chaldene>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Chaldene>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Chaldene>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Chaldene => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Harpalyke>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Harpalyke>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Harpalyke>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Harpalyke>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Harpalyke => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kalyke>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kalyke>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kalyke>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kalyke>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kalyke => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Iocaste>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Iocaste>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Iocaste>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Iocaste>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Iocaste => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Erinome>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Erinome>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Erinome>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Erinome>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Erinome => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Isonoe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Isonoe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Isonoe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Isonoe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Isonoe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Praxidike>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Praxidike>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Praxidike>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Praxidike>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Praxidike => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Autonoe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Autonoe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Autonoe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Autonoe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Autonoe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Thyone>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Thyone>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Thyone>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Thyone>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Thyone => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Hermippe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Hermippe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Hermippe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Hermippe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Hermippe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Aitne>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Aitne>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Aitne>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Aitne>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Aitne => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Eurydome>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Eurydome>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Eurydome>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Eurydome>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Eurydome => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Euanthe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Euanthe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Euanthe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Euanthe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Euanthe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Euporie>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Euporie>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Euporie>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Euporie>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Euporie => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Orthosie>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Orthosie>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Orthosie>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Orthosie>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Orthosie => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Sponde>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Sponde>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Sponde>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Sponde>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Sponde => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kale>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kale>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kale>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kale>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kale => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Pasithee>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Pasithee>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Pasithee>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Pasithee>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Pasithee => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Hegemone>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Hegemone>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Hegemone>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Hegemone>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Hegemone => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Mneme>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Mneme>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Mneme>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Mneme>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Mneme => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Aoede>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Aoede>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Aoede>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Aoede>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Aoede => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Thelxinoe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Thelxinoe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Thelxinoe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Thelxinoe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Thelxinoe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Arche>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Arche>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Arche>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Arche>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Arche => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kallichore>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kallichore>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kallichore>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kallichore>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kallichore => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Helike>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Helike>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Helike>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Helike>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Helike => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Carpo>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Carpo>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Carpo>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Carpo>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Carpo => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Eukelade>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Eukelade>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Eukelade>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Eukelade>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Eukelade => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Cyllene>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Cyllene>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Cyllene>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Cyllene>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Cyllene => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kore>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kore>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kore>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kore>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kore => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Herse>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Herse>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Herse>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Herse>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Herse => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Dia>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Dia>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Dia>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Dia>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Dia => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Mimas>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Mimas>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Mimas>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Mimas>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Mimas => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Enceladus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Enceladus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Enceladus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Enceladus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Enceladus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Tethys>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Tethys>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Tethys>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Tethys>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Tethys => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Dione>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Dione>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Dione>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Dione>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Dione => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Rhea>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Rhea>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Rhea>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Rhea>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Rhea => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Titan>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Titan>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Titan>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Titan>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Titan => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Hyperion>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Hyperion>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Hyperion>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Hyperion>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Hyperion => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Iapetus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Iapetus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Iapetus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Iapetus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Iapetus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Phoebe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Phoebe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Phoebe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Phoebe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Phoebe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Janus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Janus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Janus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Janus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Janus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Epimetheus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Epimetheus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Epimetheus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Epimetheus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Epimetheus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Helene>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Helene>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Helene>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Helene>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Helene => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Telesto>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Telesto>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Telesto>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Telesto>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Telesto => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Calypso>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Calypso>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Calypso>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Calypso>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Calypso => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Atlas>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Atlas>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Atlas>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Atlas>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Atlas => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Prometheus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Prometheus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Prometheus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Prometheus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Prometheus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Pandora>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Pandora>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Pandora>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Pandora>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Pandora => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Pan>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Pan>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Pan>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Pan>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Pan => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ymir>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ymir>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ymir>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ymir>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ymir => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Paaliaq>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Paaliaq>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Paaliaq>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Paaliaq>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Paaliaq => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Tarvos>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Tarvos>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Tarvos>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Tarvos>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Tarvos => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ijiraq>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ijiraq>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ijiraq>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ijiraq>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ijiraq => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Suttungr>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Suttungr>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Suttungr>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Suttungr>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Suttungr => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kiviuq>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kiviuq>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kiviuq>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kiviuq>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kiviuq => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Mundilfari>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Mundilfari>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Mundilfari>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Mundilfari>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Mundilfari => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Albiorix>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Albiorix>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Albiorix>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Albiorix>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Albiorix => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Skathi>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Skathi>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Skathi>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Skathi>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Skathi => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Erriapus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Erriapus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Erriapus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Erriapus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Erriapus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Siarnaq>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Siarnaq>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Siarnaq>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Siarnaq>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Siarnaq => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Thrymr>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Thrymr>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Thrymr>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Thrymr>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Thrymr => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Narvi>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Narvi>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Narvi>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Narvi>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Narvi => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Methone>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Methone>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Methone>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Methone>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Methone => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Pallene>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Pallene>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Pallene>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Pallene>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Pallene => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Polydeuces>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Polydeuces>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Polydeuces>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Polydeuces>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Polydeuces => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Daphnis>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Daphnis>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Daphnis>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Daphnis>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Daphnis => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Aegir>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Aegir>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Aegir>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Aegir>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Aegir => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Bebhionn>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Bebhionn>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Bebhionn>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Bebhionn>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Bebhionn => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Bergelmir>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Bergelmir>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Bergelmir>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Bergelmir>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Bergelmir => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Bestla>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Bestla>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Bestla>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Bestla>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Bestla => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Farbauti>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Farbauti>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Farbauti>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Farbauti>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Farbauti => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Fenrir>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Fenrir>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Fenrir>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Fenrir>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Fenrir => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Fornjot>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Fornjot>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Fornjot>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Fornjot>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Fornjot => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Hati>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Hati>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Hati>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Hati>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Hati => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Hyrrokkin>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Hyrrokkin>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Hyrrokkin>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Hyrrokkin>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Hyrrokkin => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kari>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kari>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kari>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kari>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kari => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Loge>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Loge>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Loge>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Loge>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Loge => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Skoll>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Skoll>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Skoll>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Skoll>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Skoll => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Surtur>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Surtur>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Surtur>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Surtur>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Surtur => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Anthe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Anthe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Anthe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Anthe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Anthe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Jarnsaxa>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Jarnsaxa>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Jarnsaxa>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Jarnsaxa>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Jarnsaxa => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Greip>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Greip>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Greip>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Greip>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Greip => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Tarqeq>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Tarqeq>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Tarqeq>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Tarqeq>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Tarqeq => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Aegaeon>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Aegaeon>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Aegaeon>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Aegaeon>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Aegaeon => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ariel>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ariel>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ariel>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ariel>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ariel => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Umbriel>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Umbriel>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Umbriel>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Umbriel>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Umbriel => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Titania>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Titania>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Titania>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Titania>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Titania => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Oberon>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Oberon>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Oberon>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Oberon>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Oberon => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Miranda>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Miranda>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Miranda>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Miranda>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Miranda => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Cordelia>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Cordelia>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Cordelia>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Cordelia>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Cordelia => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ophelia>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ophelia>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ophelia>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ophelia>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ophelia => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Bianca>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Bianca>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Bianca>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Bianca>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Bianca => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Cressida>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Cressida>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Cressida>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Cressida>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Cressida => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Desdemona>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Desdemona>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Desdemona>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Desdemona>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Desdemona => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Juliet>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Juliet>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Juliet>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Juliet>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Juliet => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Portia>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Portia>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Portia>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Portia>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Portia => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Rosalind>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Rosalind>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Rosalind>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Rosalind>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Rosalind => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Belinda>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Belinda>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Belinda>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Belinda>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Belinda => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Puck>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Puck>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Puck>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Puck>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Puck => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Caliban>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Caliban>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Caliban>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Caliban>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Caliban => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Sycorax>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Sycorax>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Sycorax>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Sycorax>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Sycorax => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Prospero>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Prospero>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Prospero>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Prospero>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Prospero => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Setebos>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Setebos>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Setebos>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Setebos>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Setebos => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Stephano>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Stephano>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Stephano>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Stephano>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Stephano => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Trinculo>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Trinculo>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Trinculo>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Trinculo>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Trinculo => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Francisco>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Francisco>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Francisco>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Francisco>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Francisco => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Margaret>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Margaret>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Margaret>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Margaret>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Margaret => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ferdinand>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ferdinand>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ferdinand>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ferdinand>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ferdinand => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Perdita>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Perdita>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Perdita>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Perdita>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Perdita => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Mab>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Mab>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Mab>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Mab>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Mab => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Cupid>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Cupid>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Cupid>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Cupid>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Cupid => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Triton>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Triton>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Triton>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Triton>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Triton => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Nereid>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Nereid>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Nereid>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Nereid>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Nereid => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Naiad>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Naiad>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Naiad>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Naiad>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Naiad => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Thalassa>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Thalassa>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Thalassa>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Thalassa>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Thalassa => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Despina>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Despina>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Despina>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Despina>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Despina => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Galatea>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Galatea>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Galatea>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Galatea>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Galatea => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Larissa>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Larissa>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Larissa>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Larissa>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Larissa => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Proteus>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Proteus>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Proteus>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Proteus>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Proteus => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Halimede>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Halimede>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Halimede>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Halimede>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Halimede => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Psamathe>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Psamathe>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Psamathe>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Psamathe>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Psamathe => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Sao>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Sao>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Sao>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Sao>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Sao => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Laomedeia>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Laomedeia>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Laomedeia>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Laomedeia>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Laomedeia => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Neso>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Neso>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Neso>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Neso>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Neso => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Charon>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Charon>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Charon>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Charon>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Charon => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Nix>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Nix>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Nix>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Nix>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Nix => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Hydra>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Hydra>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Hydra>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Hydra>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Hydra => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kerberos>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kerberos>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kerberos>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kerberos>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kerberos => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Styx>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Styx>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Styx>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Styx>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Styx => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Gaspra>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Gaspra>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Gaspra>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Gaspra>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Gaspra => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ida>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ida>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ida>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ida>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ida => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Dactyl>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Dactyl>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Dactyl>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Dactyl>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Dactyl => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Ceres>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Ceres>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Ceres>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Ceres>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Ceres => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Pallas>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Pallas>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Pallas>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Pallas>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Pallas => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Vesta>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Vesta>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Vesta>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Vesta>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Vesta => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Psyche>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Psyche>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Psyche>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Psyche>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Psyche => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Lutetia>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Lutetia>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Lutetia>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Lutetia>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Lutetia => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Kleopatra>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Kleopatra>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Kleopatra>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Kleopatra>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Kleopatra => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Eros>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Eros>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Eros>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Eros>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Eros => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Davida>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Davida>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Davida>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Davida>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Davida => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Mathilde>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Mathilde>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Mathilde>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Mathilde>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Mathilde => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Steins>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Steins>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Steins>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Steins>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Steins => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Braille>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Braille>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Braille>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Braille>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Braille => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<WilsonHarrington>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<WilsonHarrington>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<WilsonHarrington>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<WilsonHarrington>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::WilsonHarrington => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Toutatis>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Toutatis>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Toutatis>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Toutatis>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Toutatis => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Itokawa>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Itokawa>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Itokawa>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Itokawa>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Itokawa => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl<T> TryToFrame<BodyFixed<Bennu>, T> for PyState
where
    T: FrameTransformationProvider + PyDeltaUt1Provider,
{
    type Output = State<PyTime, PyBody, BodyFixed<Bennu>>;
    type Error = T::Error;
    fn try_to_frame(
        &self,
        frame: BodyFixed<Bennu>,
        provider: &T,
    ) -> Result<State<PyTime, PyBody, BodyFixed<Bennu>>, T::Error> {
        match self.0.reference_frame() {
            PyFrame::Icrf => self.0.with_frame(Icrf).try_to_frame(frame, provider),
            PyFrame::Bennu => Ok(self.0.with_frame(frame)),
            _ => self
                .try_to_frame(Icrf, provider)?
                .try_to_frame(frame, provider),
        }
    }
}
impl PyState {
    pub fn to_frame_generated(
        &self,
        frame: PyFrame,
        provider: Option<&Bound<'_, PyUt1Provider>>,
    ) -> PyResult<Self> {
        match frame {
            PyFrame::Icrf => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(Icrf, provider.get())?
                        .with_frame(PyFrame::Icrf),
                )),
                None => Ok(PyState(
                    self.try_to_frame(Icrf, &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Icrf),
                )),
            },
            PyFrame::Sun => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sun), provider.get())?
                        .with_frame(PyFrame::Sun),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sun), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Sun),
                )),
            },
            PyFrame::Mercury => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mercury), provider.get())?
                        .with_frame(PyFrame::Mercury),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mercury), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Mercury),
                )),
            },
            PyFrame::Venus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Venus), provider.get())?
                        .with_frame(PyFrame::Venus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Venus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Venus),
                )),
            },
            PyFrame::Earth => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Earth), provider.get())?
                        .with_frame(PyFrame::Earth),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Earth), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Earth),
                )),
            },
            PyFrame::Mars => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mars), provider.get())?
                        .with_frame(PyFrame::Mars),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mars), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Mars),
                )),
            },
            PyFrame::Jupiter => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Jupiter), provider.get())?
                        .with_frame(PyFrame::Jupiter),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Jupiter), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Jupiter),
                )),
            },
            PyFrame::Saturn => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Saturn), provider.get())?
                        .with_frame(PyFrame::Saturn),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Saturn), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Saturn),
                )),
            },
            PyFrame::Uranus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Uranus), provider.get())?
                        .with_frame(PyFrame::Uranus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Uranus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Uranus),
                )),
            },
            PyFrame::Neptune => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Neptune), provider.get())?
                        .with_frame(PyFrame::Neptune),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Neptune), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Neptune),
                )),
            },
            PyFrame::Pluto => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pluto), provider.get())?
                        .with_frame(PyFrame::Pluto),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pluto), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Pluto),
                )),
            },
            PyFrame::Moon => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Moon), provider.get())?
                        .with_frame(PyFrame::Moon),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Moon), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Moon),
                )),
            },
            PyFrame::Phobos => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Phobos), provider.get())?
                        .with_frame(PyFrame::Phobos),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Phobos), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Phobos),
                )),
            },
            PyFrame::Deimos => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Deimos), provider.get())?
                        .with_frame(PyFrame::Deimos),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Deimos), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Deimos),
                )),
            },
            PyFrame::Io => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Io), provider.get())?
                        .with_frame(PyFrame::Io),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Io), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Io),
                )),
            },
            PyFrame::Europa => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Europa), provider.get())?
                        .with_frame(PyFrame::Europa),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Europa), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Europa),
                )),
            },
            PyFrame::Ganymede => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ganymede), provider.get())?
                        .with_frame(PyFrame::Ganymede),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ganymede), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ganymede),
                )),
            },
            PyFrame::Callisto => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Callisto), provider.get())?
                        .with_frame(PyFrame::Callisto),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Callisto), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Callisto),
                )),
            },
            PyFrame::Amalthea => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Amalthea), provider.get())?
                        .with_frame(PyFrame::Amalthea),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Amalthea), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Amalthea),
                )),
            },
            PyFrame::Himalia => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Himalia), provider.get())?
                        .with_frame(PyFrame::Himalia),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Himalia), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Himalia),
                )),
            },
            PyFrame::Elara => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Elara), provider.get())?
                        .with_frame(PyFrame::Elara),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Elara), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Elara),
                )),
            },
            PyFrame::Pasiphae => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pasiphae), provider.get())?
                        .with_frame(PyFrame::Pasiphae),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pasiphae), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Pasiphae),
                )),
            },
            PyFrame::Sinope => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sinope), provider.get())?
                        .with_frame(PyFrame::Sinope),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sinope), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Sinope),
                )),
            },
            PyFrame::Lysithea => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Lysithea), provider.get())?
                        .with_frame(PyFrame::Lysithea),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Lysithea), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Lysithea),
                )),
            },
            PyFrame::Carme => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Carme), provider.get())?
                        .with_frame(PyFrame::Carme),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Carme), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Carme),
                )),
            },
            PyFrame::Ananke => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ananke), provider.get())?
                        .with_frame(PyFrame::Ananke),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ananke), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ananke),
                )),
            },
            PyFrame::Leda => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Leda), provider.get())?
                        .with_frame(PyFrame::Leda),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Leda), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Leda),
                )),
            },
            PyFrame::Thebe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thebe), provider.get())?
                        .with_frame(PyFrame::Thebe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thebe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Thebe),
                )),
            },
            PyFrame::Adrastea => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Adrastea), provider.get())?
                        .with_frame(PyFrame::Adrastea),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Adrastea), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Adrastea),
                )),
            },
            PyFrame::Metis => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Metis), provider.get())?
                        .with_frame(PyFrame::Metis),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Metis), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Metis),
                )),
            },
            PyFrame::Callirrhoe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Callirrhoe), provider.get())?
                        .with_frame(PyFrame::Callirrhoe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Callirrhoe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Callirrhoe),
                )),
            },
            PyFrame::Themisto => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Themisto), provider.get())?
                        .with_frame(PyFrame::Themisto),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Themisto), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Themisto),
                )),
            },
            PyFrame::Magaclite => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Magaclite), provider.get())?
                        .with_frame(PyFrame::Magaclite),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Magaclite), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Magaclite),
                )),
            },
            PyFrame::Taygete => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Taygete), provider.get())?
                        .with_frame(PyFrame::Taygete),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Taygete), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Taygete),
                )),
            },
            PyFrame::Chaldene => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Chaldene), provider.get())?
                        .with_frame(PyFrame::Chaldene),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Chaldene), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Chaldene),
                )),
            },
            PyFrame::Harpalyke => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Harpalyke), provider.get())?
                        .with_frame(PyFrame::Harpalyke),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Harpalyke), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Harpalyke),
                )),
            },
            PyFrame::Kalyke => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kalyke), provider.get())?
                        .with_frame(PyFrame::Kalyke),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kalyke), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kalyke),
                )),
            },
            PyFrame::Iocaste => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Iocaste), provider.get())?
                        .with_frame(PyFrame::Iocaste),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Iocaste), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Iocaste),
                )),
            },
            PyFrame::Erinome => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Erinome), provider.get())?
                        .with_frame(PyFrame::Erinome),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Erinome), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Erinome),
                )),
            },
            PyFrame::Isonoe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Isonoe), provider.get())?
                        .with_frame(PyFrame::Isonoe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Isonoe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Isonoe),
                )),
            },
            PyFrame::Praxidike => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Praxidike), provider.get())?
                        .with_frame(PyFrame::Praxidike),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Praxidike), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Praxidike),
                )),
            },
            PyFrame::Autonoe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Autonoe), provider.get())?
                        .with_frame(PyFrame::Autonoe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Autonoe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Autonoe),
                )),
            },
            PyFrame::Thyone => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thyone), provider.get())?
                        .with_frame(PyFrame::Thyone),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thyone), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Thyone),
                )),
            },
            PyFrame::Hermippe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hermippe), provider.get())?
                        .with_frame(PyFrame::Hermippe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hermippe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Hermippe),
                )),
            },
            PyFrame::Aitne => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aitne), provider.get())?
                        .with_frame(PyFrame::Aitne),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aitne), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Aitne),
                )),
            },
            PyFrame::Eurydome => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Eurydome), provider.get())?
                        .with_frame(PyFrame::Eurydome),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Eurydome), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Eurydome),
                )),
            },
            PyFrame::Euanthe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Euanthe), provider.get())?
                        .with_frame(PyFrame::Euanthe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Euanthe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Euanthe),
                )),
            },
            PyFrame::Euporie => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Euporie), provider.get())?
                        .with_frame(PyFrame::Euporie),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Euporie), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Euporie),
                )),
            },
            PyFrame::Orthosie => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Orthosie), provider.get())?
                        .with_frame(PyFrame::Orthosie),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Orthosie), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Orthosie),
                )),
            },
            PyFrame::Sponde => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sponde), provider.get())?
                        .with_frame(PyFrame::Sponde),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sponde), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Sponde),
                )),
            },
            PyFrame::Kale => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kale), provider.get())?
                        .with_frame(PyFrame::Kale),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kale), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kale),
                )),
            },
            PyFrame::Pasithee => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pasithee), provider.get())?
                        .with_frame(PyFrame::Pasithee),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pasithee), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Pasithee),
                )),
            },
            PyFrame::Hegemone => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hegemone), provider.get())?
                        .with_frame(PyFrame::Hegemone),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hegemone), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Hegemone),
                )),
            },
            PyFrame::Mneme => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mneme), provider.get())?
                        .with_frame(PyFrame::Mneme),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mneme), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Mneme),
                )),
            },
            PyFrame::Aoede => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aoede), provider.get())?
                        .with_frame(PyFrame::Aoede),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aoede), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Aoede),
                )),
            },
            PyFrame::Thelxinoe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thelxinoe), provider.get())?
                        .with_frame(PyFrame::Thelxinoe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thelxinoe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Thelxinoe),
                )),
            },
            PyFrame::Arche => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Arche), provider.get())?
                        .with_frame(PyFrame::Arche),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Arche), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Arche),
                )),
            },
            PyFrame::Kallichore => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kallichore), provider.get())?
                        .with_frame(PyFrame::Kallichore),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kallichore), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kallichore),
                )),
            },
            PyFrame::Helike => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Helike), provider.get())?
                        .with_frame(PyFrame::Helike),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Helike), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Helike),
                )),
            },
            PyFrame::Carpo => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Carpo), provider.get())?
                        .with_frame(PyFrame::Carpo),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Carpo), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Carpo),
                )),
            },
            PyFrame::Eukelade => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Eukelade), provider.get())?
                        .with_frame(PyFrame::Eukelade),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Eukelade), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Eukelade),
                )),
            },
            PyFrame::Cyllene => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cyllene), provider.get())?
                        .with_frame(PyFrame::Cyllene),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cyllene), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Cyllene),
                )),
            },
            PyFrame::Kore => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kore), provider.get())?
                        .with_frame(PyFrame::Kore),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kore), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kore),
                )),
            },
            PyFrame::Herse => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Herse), provider.get())?
                        .with_frame(PyFrame::Herse),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Herse), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Herse),
                )),
            },
            PyFrame::Dia => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Dia), provider.get())?
                        .with_frame(PyFrame::Dia),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Dia), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Dia),
                )),
            },
            PyFrame::Mimas => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mimas), provider.get())?
                        .with_frame(PyFrame::Mimas),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mimas), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Mimas),
                )),
            },
            PyFrame::Enceladus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Enceladus), provider.get())?
                        .with_frame(PyFrame::Enceladus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Enceladus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Enceladus),
                )),
            },
            PyFrame::Tethys => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Tethys), provider.get())?
                        .with_frame(PyFrame::Tethys),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Tethys), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Tethys),
                )),
            },
            PyFrame::Dione => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Dione), provider.get())?
                        .with_frame(PyFrame::Dione),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Dione), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Dione),
                )),
            },
            PyFrame::Rhea => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Rhea), provider.get())?
                        .with_frame(PyFrame::Rhea),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Rhea), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Rhea),
                )),
            },
            PyFrame::Titan => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Titan), provider.get())?
                        .with_frame(PyFrame::Titan),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Titan), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Titan),
                )),
            },
            PyFrame::Hyperion => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hyperion), provider.get())?
                        .with_frame(PyFrame::Hyperion),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hyperion), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Hyperion),
                )),
            },
            PyFrame::Iapetus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Iapetus), provider.get())?
                        .with_frame(PyFrame::Iapetus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Iapetus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Iapetus),
                )),
            },
            PyFrame::Phoebe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Phoebe), provider.get())?
                        .with_frame(PyFrame::Phoebe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Phoebe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Phoebe),
                )),
            },
            PyFrame::Janus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Janus), provider.get())?
                        .with_frame(PyFrame::Janus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Janus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Janus),
                )),
            },
            PyFrame::Epimetheus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Epimetheus), provider.get())?
                        .with_frame(PyFrame::Epimetheus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Epimetheus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Epimetheus),
                )),
            },
            PyFrame::Helene => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Helene), provider.get())?
                        .with_frame(PyFrame::Helene),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Helene), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Helene),
                )),
            },
            PyFrame::Telesto => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Telesto), provider.get())?
                        .with_frame(PyFrame::Telesto),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Telesto), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Telesto),
                )),
            },
            PyFrame::Calypso => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Calypso), provider.get())?
                        .with_frame(PyFrame::Calypso),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Calypso), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Calypso),
                )),
            },
            PyFrame::Atlas => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Atlas), provider.get())?
                        .with_frame(PyFrame::Atlas),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Atlas), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Atlas),
                )),
            },
            PyFrame::Prometheus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Prometheus), provider.get())?
                        .with_frame(PyFrame::Prometheus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Prometheus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Prometheus),
                )),
            },
            PyFrame::Pandora => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pandora), provider.get())?
                        .with_frame(PyFrame::Pandora),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pandora), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Pandora),
                )),
            },
            PyFrame::Pan => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pan), provider.get())?
                        .with_frame(PyFrame::Pan),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pan), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Pan),
                )),
            },
            PyFrame::Ymir => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ymir), provider.get())?
                        .with_frame(PyFrame::Ymir),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ymir), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ymir),
                )),
            },
            PyFrame::Paaliaq => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Paaliaq), provider.get())?
                        .with_frame(PyFrame::Paaliaq),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Paaliaq), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Paaliaq),
                )),
            },
            PyFrame::Tarvos => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Tarvos), provider.get())?
                        .with_frame(PyFrame::Tarvos),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Tarvos), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Tarvos),
                )),
            },
            PyFrame::Ijiraq => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ijiraq), provider.get())?
                        .with_frame(PyFrame::Ijiraq),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ijiraq), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ijiraq),
                )),
            },
            PyFrame::Suttungr => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Suttungr), provider.get())?
                        .with_frame(PyFrame::Suttungr),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Suttungr), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Suttungr),
                )),
            },
            PyFrame::Kiviuq => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kiviuq), provider.get())?
                        .with_frame(PyFrame::Kiviuq),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kiviuq), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kiviuq),
                )),
            },
            PyFrame::Mundilfari => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mundilfari), provider.get())?
                        .with_frame(PyFrame::Mundilfari),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mundilfari), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Mundilfari),
                )),
            },
            PyFrame::Albiorix => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Albiorix), provider.get())?
                        .with_frame(PyFrame::Albiorix),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Albiorix), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Albiorix),
                )),
            },
            PyFrame::Skathi => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Skathi), provider.get())?
                        .with_frame(PyFrame::Skathi),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Skathi), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Skathi),
                )),
            },
            PyFrame::Erriapus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Erriapus), provider.get())?
                        .with_frame(PyFrame::Erriapus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Erriapus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Erriapus),
                )),
            },
            PyFrame::Siarnaq => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Siarnaq), provider.get())?
                        .with_frame(PyFrame::Siarnaq),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Siarnaq), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Siarnaq),
                )),
            },
            PyFrame::Thrymr => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thrymr), provider.get())?
                        .with_frame(PyFrame::Thrymr),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thrymr), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Thrymr),
                )),
            },
            PyFrame::Narvi => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Narvi), provider.get())?
                        .with_frame(PyFrame::Narvi),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Narvi), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Narvi),
                )),
            },
            PyFrame::Methone => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Methone), provider.get())?
                        .with_frame(PyFrame::Methone),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Methone), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Methone),
                )),
            },
            PyFrame::Pallene => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pallene), provider.get())?
                        .with_frame(PyFrame::Pallene),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pallene), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Pallene),
                )),
            },
            PyFrame::Polydeuces => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Polydeuces), provider.get())?
                        .with_frame(PyFrame::Polydeuces),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Polydeuces), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Polydeuces),
                )),
            },
            PyFrame::Daphnis => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Daphnis), provider.get())?
                        .with_frame(PyFrame::Daphnis),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Daphnis), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Daphnis),
                )),
            },
            PyFrame::Aegir => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aegir), provider.get())?
                        .with_frame(PyFrame::Aegir),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aegir), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Aegir),
                )),
            },
            PyFrame::Bebhionn => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bebhionn), provider.get())?
                        .with_frame(PyFrame::Bebhionn),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bebhionn), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Bebhionn),
                )),
            },
            PyFrame::Bergelmir => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bergelmir), provider.get())?
                        .with_frame(PyFrame::Bergelmir),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bergelmir), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Bergelmir),
                )),
            },
            PyFrame::Bestla => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bestla), provider.get())?
                        .with_frame(PyFrame::Bestla),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bestla), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Bestla),
                )),
            },
            PyFrame::Farbauti => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Farbauti), provider.get())?
                        .with_frame(PyFrame::Farbauti),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Farbauti), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Farbauti),
                )),
            },
            PyFrame::Fenrir => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Fenrir), provider.get())?
                        .with_frame(PyFrame::Fenrir),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Fenrir), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Fenrir),
                )),
            },
            PyFrame::Fornjot => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Fornjot), provider.get())?
                        .with_frame(PyFrame::Fornjot),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Fornjot), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Fornjot),
                )),
            },
            PyFrame::Hati => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hati), provider.get())?
                        .with_frame(PyFrame::Hati),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hati), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Hati),
                )),
            },
            PyFrame::Hyrrokkin => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hyrrokkin), provider.get())?
                        .with_frame(PyFrame::Hyrrokkin),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hyrrokkin), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Hyrrokkin),
                )),
            },
            PyFrame::Kari => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kari), provider.get())?
                        .with_frame(PyFrame::Kari),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kari), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kari),
                )),
            },
            PyFrame::Loge => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Loge), provider.get())?
                        .with_frame(PyFrame::Loge),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Loge), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Loge),
                )),
            },
            PyFrame::Skoll => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Skoll), provider.get())?
                        .with_frame(PyFrame::Skoll),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Skoll), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Skoll),
                )),
            },
            PyFrame::Surtur => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Surtur), provider.get())?
                        .with_frame(PyFrame::Surtur),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Surtur), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Surtur),
                )),
            },
            PyFrame::Anthe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Anthe), provider.get())?
                        .with_frame(PyFrame::Anthe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Anthe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Anthe),
                )),
            },
            PyFrame::Jarnsaxa => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Jarnsaxa), provider.get())?
                        .with_frame(PyFrame::Jarnsaxa),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Jarnsaxa), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Jarnsaxa),
                )),
            },
            PyFrame::Greip => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Greip), provider.get())?
                        .with_frame(PyFrame::Greip),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Greip), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Greip),
                )),
            },
            PyFrame::Tarqeq => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Tarqeq), provider.get())?
                        .with_frame(PyFrame::Tarqeq),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Tarqeq), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Tarqeq),
                )),
            },
            PyFrame::Aegaeon => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aegaeon), provider.get())?
                        .with_frame(PyFrame::Aegaeon),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Aegaeon), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Aegaeon),
                )),
            },
            PyFrame::Ariel => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ariel), provider.get())?
                        .with_frame(PyFrame::Ariel),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ariel), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ariel),
                )),
            },
            PyFrame::Umbriel => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Umbriel), provider.get())?
                        .with_frame(PyFrame::Umbriel),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Umbriel), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Umbriel),
                )),
            },
            PyFrame::Titania => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Titania), provider.get())?
                        .with_frame(PyFrame::Titania),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Titania), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Titania),
                )),
            },
            PyFrame::Oberon => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Oberon), provider.get())?
                        .with_frame(PyFrame::Oberon),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Oberon), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Oberon),
                )),
            },
            PyFrame::Miranda => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Miranda), provider.get())?
                        .with_frame(PyFrame::Miranda),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Miranda), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Miranda),
                )),
            },
            PyFrame::Cordelia => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cordelia), provider.get())?
                        .with_frame(PyFrame::Cordelia),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cordelia), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Cordelia),
                )),
            },
            PyFrame::Ophelia => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ophelia), provider.get())?
                        .with_frame(PyFrame::Ophelia),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ophelia), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ophelia),
                )),
            },
            PyFrame::Bianca => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bianca), provider.get())?
                        .with_frame(PyFrame::Bianca),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bianca), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Bianca),
                )),
            },
            PyFrame::Cressida => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cressida), provider.get())?
                        .with_frame(PyFrame::Cressida),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cressida), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Cressida),
                )),
            },
            PyFrame::Desdemona => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Desdemona), provider.get())?
                        .with_frame(PyFrame::Desdemona),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Desdemona), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Desdemona),
                )),
            },
            PyFrame::Juliet => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Juliet), provider.get())?
                        .with_frame(PyFrame::Juliet),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Juliet), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Juliet),
                )),
            },
            PyFrame::Portia => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Portia), provider.get())?
                        .with_frame(PyFrame::Portia),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Portia), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Portia),
                )),
            },
            PyFrame::Rosalind => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Rosalind), provider.get())?
                        .with_frame(PyFrame::Rosalind),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Rosalind), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Rosalind),
                )),
            },
            PyFrame::Belinda => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Belinda), provider.get())?
                        .with_frame(PyFrame::Belinda),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Belinda), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Belinda),
                )),
            },
            PyFrame::Puck => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Puck), provider.get())?
                        .with_frame(PyFrame::Puck),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Puck), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Puck),
                )),
            },
            PyFrame::Caliban => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Caliban), provider.get())?
                        .with_frame(PyFrame::Caliban),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Caliban), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Caliban),
                )),
            },
            PyFrame::Sycorax => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sycorax), provider.get())?
                        .with_frame(PyFrame::Sycorax),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sycorax), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Sycorax),
                )),
            },
            PyFrame::Prospero => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Prospero), provider.get())?
                        .with_frame(PyFrame::Prospero),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Prospero), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Prospero),
                )),
            },
            PyFrame::Setebos => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Setebos), provider.get())?
                        .with_frame(PyFrame::Setebos),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Setebos), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Setebos),
                )),
            },
            PyFrame::Stephano => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Stephano), provider.get())?
                        .with_frame(PyFrame::Stephano),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Stephano), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Stephano),
                )),
            },
            PyFrame::Trinculo => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Trinculo), provider.get())?
                        .with_frame(PyFrame::Trinculo),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Trinculo), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Trinculo),
                )),
            },
            PyFrame::Francisco => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Francisco), provider.get())?
                        .with_frame(PyFrame::Francisco),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Francisco), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Francisco),
                )),
            },
            PyFrame::Margaret => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Margaret), provider.get())?
                        .with_frame(PyFrame::Margaret),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Margaret), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Margaret),
                )),
            },
            PyFrame::Ferdinand => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ferdinand), provider.get())?
                        .with_frame(PyFrame::Ferdinand),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ferdinand), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ferdinand),
                )),
            },
            PyFrame::Perdita => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Perdita), provider.get())?
                        .with_frame(PyFrame::Perdita),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Perdita), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Perdita),
                )),
            },
            PyFrame::Mab => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mab), provider.get())?
                        .with_frame(PyFrame::Mab),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mab), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Mab),
                )),
            },
            PyFrame::Cupid => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cupid), provider.get())?
                        .with_frame(PyFrame::Cupid),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Cupid), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Cupid),
                )),
            },
            PyFrame::Triton => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Triton), provider.get())?
                        .with_frame(PyFrame::Triton),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Triton), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Triton),
                )),
            },
            PyFrame::Nereid => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Nereid), provider.get())?
                        .with_frame(PyFrame::Nereid),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Nereid), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Nereid),
                )),
            },
            PyFrame::Naiad => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Naiad), provider.get())?
                        .with_frame(PyFrame::Naiad),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Naiad), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Naiad),
                )),
            },
            PyFrame::Thalassa => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thalassa), provider.get())?
                        .with_frame(PyFrame::Thalassa),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Thalassa), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Thalassa),
                )),
            },
            PyFrame::Despina => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Despina), provider.get())?
                        .with_frame(PyFrame::Despina),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Despina), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Despina),
                )),
            },
            PyFrame::Galatea => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Galatea), provider.get())?
                        .with_frame(PyFrame::Galatea),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Galatea), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Galatea),
                )),
            },
            PyFrame::Larissa => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Larissa), provider.get())?
                        .with_frame(PyFrame::Larissa),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Larissa), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Larissa),
                )),
            },
            PyFrame::Proteus => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Proteus), provider.get())?
                        .with_frame(PyFrame::Proteus),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Proteus), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Proteus),
                )),
            },
            PyFrame::Halimede => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Halimede), provider.get())?
                        .with_frame(PyFrame::Halimede),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Halimede), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Halimede),
                )),
            },
            PyFrame::Psamathe => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Psamathe), provider.get())?
                        .with_frame(PyFrame::Psamathe),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Psamathe), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Psamathe),
                )),
            },
            PyFrame::Sao => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sao), provider.get())?
                        .with_frame(PyFrame::Sao),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Sao), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Sao),
                )),
            },
            PyFrame::Laomedeia => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Laomedeia), provider.get())?
                        .with_frame(PyFrame::Laomedeia),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Laomedeia), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Laomedeia),
                )),
            },
            PyFrame::Neso => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Neso), provider.get())?
                        .with_frame(PyFrame::Neso),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Neso), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Neso),
                )),
            },
            PyFrame::Charon => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Charon), provider.get())?
                        .with_frame(PyFrame::Charon),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Charon), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Charon),
                )),
            },
            PyFrame::Nix => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Nix), provider.get())?
                        .with_frame(PyFrame::Nix),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Nix), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Nix),
                )),
            },
            PyFrame::Hydra => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hydra), provider.get())?
                        .with_frame(PyFrame::Hydra),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Hydra), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Hydra),
                )),
            },
            PyFrame::Kerberos => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kerberos), provider.get())?
                        .with_frame(PyFrame::Kerberos),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kerberos), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kerberos),
                )),
            },
            PyFrame::Styx => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Styx), provider.get())?
                        .with_frame(PyFrame::Styx),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Styx), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Styx),
                )),
            },
            PyFrame::Gaspra => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Gaspra), provider.get())?
                        .with_frame(PyFrame::Gaspra),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Gaspra), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Gaspra),
                )),
            },
            PyFrame::Ida => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ida), provider.get())?
                        .with_frame(PyFrame::Ida),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ida), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ida),
                )),
            },
            PyFrame::Dactyl => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Dactyl), provider.get())?
                        .with_frame(PyFrame::Dactyl),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Dactyl), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Dactyl),
                )),
            },
            PyFrame::Ceres => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ceres), provider.get())?
                        .with_frame(PyFrame::Ceres),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Ceres), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Ceres),
                )),
            },
            PyFrame::Pallas => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pallas), provider.get())?
                        .with_frame(PyFrame::Pallas),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Pallas), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Pallas),
                )),
            },
            PyFrame::Vesta => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Vesta), provider.get())?
                        .with_frame(PyFrame::Vesta),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Vesta), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Vesta),
                )),
            },
            PyFrame::Psyche => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Psyche), provider.get())?
                        .with_frame(PyFrame::Psyche),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Psyche), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Psyche),
                )),
            },
            PyFrame::Lutetia => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Lutetia), provider.get())?
                        .with_frame(PyFrame::Lutetia),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Lutetia), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Lutetia),
                )),
            },
            PyFrame::Kleopatra => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kleopatra), provider.get())?
                        .with_frame(PyFrame::Kleopatra),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Kleopatra), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Kleopatra),
                )),
            },
            PyFrame::Eros => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Eros), provider.get())?
                        .with_frame(PyFrame::Eros),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Eros), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Eros),
                )),
            },
            PyFrame::Davida => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Davida), provider.get())?
                        .with_frame(PyFrame::Davida),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Davida), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Davida),
                )),
            },
            PyFrame::Mathilde => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mathilde), provider.get())?
                        .with_frame(PyFrame::Mathilde),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Mathilde), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Mathilde),
                )),
            },
            PyFrame::Steins => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Steins), provider.get())?
                        .with_frame(PyFrame::Steins),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Steins), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Steins),
                )),
            },
            PyFrame::Braille => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Braille), provider.get())?
                        .with_frame(PyFrame::Braille),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Braille), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Braille),
                )),
            },
            PyFrame::WilsonHarrington => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(WilsonHarrington), provider.get())?
                        .with_frame(PyFrame::WilsonHarrington),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(WilsonHarrington), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::WilsonHarrington),
                )),
            },
            PyFrame::Toutatis => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Toutatis), provider.get())?
                        .with_frame(PyFrame::Toutatis),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Toutatis), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Toutatis),
                )),
            },
            PyFrame::Itokawa => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Itokawa), provider.get())?
                        .with_frame(PyFrame::Itokawa),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Itokawa), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Itokawa),
                )),
            },
            PyFrame::Bennu => match provider {
                Some(provider) => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bennu), provider.get())?
                        .with_frame(PyFrame::Bennu),
                )),
                None => Ok(PyState(
                    self.try_to_frame(BodyFixed(Bennu), &PyNoOpOffsetProvider)?
                        .with_frame(PyFrame::Bennu),
                )),
            },
        }
    }
}
impl ReferenceFrame for PyFrame {
    fn name(&self) -> String {
        match self {
            PyFrame::Icrf => "International Celestial Reference Frame".to_string(),
            PyFrame::Sun => "IAU Body-Fixed Frame for the Sun".to_string(),
            PyFrame::Mercury => "IAU Body-Fixed Frame for Mercury".to_string(),
            PyFrame::Venus => "IAU Body-Fixed Frame for Venus".to_string(),
            PyFrame::Earth => "IAU Body-Fixed Frame for Earth".to_string(),
            PyFrame::Mars => "IAU Body-Fixed Frame for Mars".to_string(),
            PyFrame::Jupiter => "IAU Body-Fixed Frame for Jupiter".to_string(),
            PyFrame::Saturn => "IAU Body-Fixed Frame for Saturn".to_string(),
            PyFrame::Uranus => "IAU Body-Fixed Frame for Uranus".to_string(),
            PyFrame::Neptune => "IAU Body-Fixed Frame for Neptune".to_string(),
            PyFrame::Pluto => "IAU Body-Fixed Frame for Pluto".to_string(),
            PyFrame::Moon => "IAU Body-Fixed Frame for the Moon".to_string(),
            PyFrame::Phobos => "IAU Body-Fixed Frame for Phobos".to_string(),
            PyFrame::Deimos => "IAU Body-Fixed Frame for Deimos".to_string(),
            PyFrame::Io => "IAU Body-Fixed Frame for Io".to_string(),
            PyFrame::Europa => "IAU Body-Fixed Frame for Europa".to_string(),
            PyFrame::Ganymede => "IAU Body-Fixed Frame for Ganymede".to_string(),
            PyFrame::Callisto => "IAU Body-Fixed Frame for Callisto".to_string(),
            PyFrame::Amalthea => "IAU Body-Fixed Frame for Amalthea".to_string(),
            PyFrame::Himalia => "IAU Body-Fixed Frame for Himalia".to_string(),
            PyFrame::Elara => "IAU Body-Fixed Frame for Elara".to_string(),
            PyFrame::Pasiphae => "IAU Body-Fixed Frame for Pasiphae".to_string(),
            PyFrame::Sinope => "IAU Body-Fixed Frame for Sinope".to_string(),
            PyFrame::Lysithea => "IAU Body-Fixed Frame for Lysithea".to_string(),
            PyFrame::Carme => "IAU Body-Fixed Frame for Carme".to_string(),
            PyFrame::Ananke => "IAU Body-Fixed Frame for Ananke".to_string(),
            PyFrame::Leda => "IAU Body-Fixed Frame for Leda".to_string(),
            PyFrame::Thebe => "IAU Body-Fixed Frame for Thebe".to_string(),
            PyFrame::Adrastea => "IAU Body-Fixed Frame for Adrastea".to_string(),
            PyFrame::Metis => "IAU Body-Fixed Frame for Metis".to_string(),
            PyFrame::Callirrhoe => "IAU Body-Fixed Frame for Callirrhoe".to_string(),
            PyFrame::Themisto => "IAU Body-Fixed Frame for Themisto".to_string(),
            PyFrame::Magaclite => "IAU Body-Fixed Frame for Magaclite".to_string(),
            PyFrame::Taygete => "IAU Body-Fixed Frame for Taygete".to_string(),
            PyFrame::Chaldene => "IAU Body-Fixed Frame for Chaldene".to_string(),
            PyFrame::Harpalyke => "IAU Body-Fixed Frame for Harpalyke".to_string(),
            PyFrame::Kalyke => "IAU Body-Fixed Frame for Kalyke".to_string(),
            PyFrame::Iocaste => "IAU Body-Fixed Frame for Iocaste".to_string(),
            PyFrame::Erinome => "IAU Body-Fixed Frame for Erinome".to_string(),
            PyFrame::Isonoe => "IAU Body-Fixed Frame for Isonoe".to_string(),
            PyFrame::Praxidike => "IAU Body-Fixed Frame for Praxidike".to_string(),
            PyFrame::Autonoe => "IAU Body-Fixed Frame for Autonoe".to_string(),
            PyFrame::Thyone => "IAU Body-Fixed Frame for Thyone".to_string(),
            PyFrame::Hermippe => "IAU Body-Fixed Frame for Hermippe".to_string(),
            PyFrame::Aitne => "IAU Body-Fixed Frame for Aitne".to_string(),
            PyFrame::Eurydome => "IAU Body-Fixed Frame for Eurydome".to_string(),
            PyFrame::Euanthe => "IAU Body-Fixed Frame for Euanthe".to_string(),
            PyFrame::Euporie => "IAU Body-Fixed Frame for Euporie".to_string(),
            PyFrame::Orthosie => "IAU Body-Fixed Frame for Orthosie".to_string(),
            PyFrame::Sponde => "IAU Body-Fixed Frame for Sponde".to_string(),
            PyFrame::Kale => "IAU Body-Fixed Frame for Kale".to_string(),
            PyFrame::Pasithee => "IAU Body-Fixed Frame for Pasithee".to_string(),
            PyFrame::Hegemone => "IAU Body-Fixed Frame for Hegemone".to_string(),
            PyFrame::Mneme => "IAU Body-Fixed Frame for Mneme".to_string(),
            PyFrame::Aoede => "IAU Body-Fixed Frame for Aoede".to_string(),
            PyFrame::Thelxinoe => "IAU Body-Fixed Frame for Thelxinoe".to_string(),
            PyFrame::Arche => "IAU Body-Fixed Frame for Arche".to_string(),
            PyFrame::Kallichore => "IAU Body-Fixed Frame for Kallichore".to_string(),
            PyFrame::Helike => "IAU Body-Fixed Frame for Helike".to_string(),
            PyFrame::Carpo => "IAU Body-Fixed Frame for Carpo".to_string(),
            PyFrame::Eukelade => "IAU Body-Fixed Frame for Eukelade".to_string(),
            PyFrame::Cyllene => "IAU Body-Fixed Frame for Cyllene".to_string(),
            PyFrame::Kore => "IAU Body-Fixed Frame for Kore".to_string(),
            PyFrame::Herse => "IAU Body-Fixed Frame for Herse".to_string(),
            PyFrame::Dia => "IAU Body-Fixed Frame for Dia".to_string(),
            PyFrame::Mimas => "IAU Body-Fixed Frame for Mimas".to_string(),
            PyFrame::Enceladus => "IAU Body-Fixed Frame for Enceladus".to_string(),
            PyFrame::Tethys => "IAU Body-Fixed Frame for Tethys".to_string(),
            PyFrame::Dione => "IAU Body-Fixed Frame for Dione".to_string(),
            PyFrame::Rhea => "IAU Body-Fixed Frame for Rhea".to_string(),
            PyFrame::Titan => "IAU Body-Fixed Frame for Titan".to_string(),
            PyFrame::Hyperion => "IAU Body-Fixed Frame for Hyperion".to_string(),
            PyFrame::Iapetus => "IAU Body-Fixed Frame for Iapetus".to_string(),
            PyFrame::Phoebe => "IAU Body-Fixed Frame for Phoebe".to_string(),
            PyFrame::Janus => "IAU Body-Fixed Frame for Janus".to_string(),
            PyFrame::Epimetheus => "IAU Body-Fixed Frame for Epimetheus".to_string(),
            PyFrame::Helene => "IAU Body-Fixed Frame for Helene".to_string(),
            PyFrame::Telesto => "IAU Body-Fixed Frame for Telesto".to_string(),
            PyFrame::Calypso => "IAU Body-Fixed Frame for Calypso".to_string(),
            PyFrame::Atlas => "IAU Body-Fixed Frame for Atlas".to_string(),
            PyFrame::Prometheus => "IAU Body-Fixed Frame for Prometheus".to_string(),
            PyFrame::Pandora => "IAU Body-Fixed Frame for Pandora".to_string(),
            PyFrame::Pan => "IAU Body-Fixed Frame for Pan".to_string(),
            PyFrame::Ymir => "IAU Body-Fixed Frame for Ymir".to_string(),
            PyFrame::Paaliaq => "IAU Body-Fixed Frame for Paaliaq".to_string(),
            PyFrame::Tarvos => "IAU Body-Fixed Frame for Tarvos".to_string(),
            PyFrame::Ijiraq => "IAU Body-Fixed Frame for Ijiraq".to_string(),
            PyFrame::Suttungr => "IAU Body-Fixed Frame for Suttungr".to_string(),
            PyFrame::Kiviuq => "IAU Body-Fixed Frame for Kiviuq".to_string(),
            PyFrame::Mundilfari => "IAU Body-Fixed Frame for Mundilfari".to_string(),
            PyFrame::Albiorix => "IAU Body-Fixed Frame for Albiorix".to_string(),
            PyFrame::Skathi => "IAU Body-Fixed Frame for Skathi".to_string(),
            PyFrame::Erriapus => "IAU Body-Fixed Frame for Erriapus".to_string(),
            PyFrame::Siarnaq => "IAU Body-Fixed Frame for Siarnaq".to_string(),
            PyFrame::Thrymr => "IAU Body-Fixed Frame for Thrymr".to_string(),
            PyFrame::Narvi => "IAU Body-Fixed Frame for Narvi".to_string(),
            PyFrame::Methone => "IAU Body-Fixed Frame for Methone".to_string(),
            PyFrame::Pallene => "IAU Body-Fixed Frame for Pallene".to_string(),
            PyFrame::Polydeuces => "IAU Body-Fixed Frame for Polydeuces".to_string(),
            PyFrame::Daphnis => "IAU Body-Fixed Frame for Daphnis".to_string(),
            PyFrame::Aegir => "IAU Body-Fixed Frame for Aegir".to_string(),
            PyFrame::Bebhionn => "IAU Body-Fixed Frame for Bebhionn".to_string(),
            PyFrame::Bergelmir => "IAU Body-Fixed Frame for Bergelmir".to_string(),
            PyFrame::Bestla => "IAU Body-Fixed Frame for Bestla".to_string(),
            PyFrame::Farbauti => "IAU Body-Fixed Frame for Farbauti".to_string(),
            PyFrame::Fenrir => "IAU Body-Fixed Frame for Fenrir".to_string(),
            PyFrame::Fornjot => "IAU Body-Fixed Frame for Fornjot".to_string(),
            PyFrame::Hati => "IAU Body-Fixed Frame for Hati".to_string(),
            PyFrame::Hyrrokkin => "IAU Body-Fixed Frame for Hyrrokkin".to_string(),
            PyFrame::Kari => "IAU Body-Fixed Frame for Kari".to_string(),
            PyFrame::Loge => "IAU Body-Fixed Frame for Loge".to_string(),
            PyFrame::Skoll => "IAU Body-Fixed Frame for Skoll".to_string(),
            PyFrame::Surtur => "IAU Body-Fixed Frame for Surtur".to_string(),
            PyFrame::Anthe => "IAU Body-Fixed Frame for Anthe".to_string(),
            PyFrame::Jarnsaxa => "IAU Body-Fixed Frame for Jarnsaxa".to_string(),
            PyFrame::Greip => "IAU Body-Fixed Frame for Greip".to_string(),
            PyFrame::Tarqeq => "IAU Body-Fixed Frame for Tarqeq".to_string(),
            PyFrame::Aegaeon => "IAU Body-Fixed Frame for Aegaeon".to_string(),
            PyFrame::Ariel => "IAU Body-Fixed Frame for Ariel".to_string(),
            PyFrame::Umbriel => "IAU Body-Fixed Frame for Umbriel".to_string(),
            PyFrame::Titania => "IAU Body-Fixed Frame for Titania".to_string(),
            PyFrame::Oberon => "IAU Body-Fixed Frame for Oberon".to_string(),
            PyFrame::Miranda => "IAU Body-Fixed Frame for Miranda".to_string(),
            PyFrame::Cordelia => "IAU Body-Fixed Frame for Cordelia".to_string(),
            PyFrame::Ophelia => "IAU Body-Fixed Frame for Ophelia".to_string(),
            PyFrame::Bianca => "IAU Body-Fixed Frame for Bianca".to_string(),
            PyFrame::Cressida => "IAU Body-Fixed Frame for Cressida".to_string(),
            PyFrame::Desdemona => "IAU Body-Fixed Frame for Desdemona".to_string(),
            PyFrame::Juliet => "IAU Body-Fixed Frame for Juliet".to_string(),
            PyFrame::Portia => "IAU Body-Fixed Frame for Portia".to_string(),
            PyFrame::Rosalind => "IAU Body-Fixed Frame for Rosalind".to_string(),
            PyFrame::Belinda => "IAU Body-Fixed Frame for Belinda".to_string(),
            PyFrame::Puck => "IAU Body-Fixed Frame for Puck".to_string(),
            PyFrame::Caliban => "IAU Body-Fixed Frame for Caliban".to_string(),
            PyFrame::Sycorax => "IAU Body-Fixed Frame for Sycorax".to_string(),
            PyFrame::Prospero => "IAU Body-Fixed Frame for Prospero".to_string(),
            PyFrame::Setebos => "IAU Body-Fixed Frame for Setebos".to_string(),
            PyFrame::Stephano => "IAU Body-Fixed Frame for Stephano".to_string(),
            PyFrame::Trinculo => "IAU Body-Fixed Frame for Trinculo".to_string(),
            PyFrame::Francisco => "IAU Body-Fixed Frame for Francisco".to_string(),
            PyFrame::Margaret => "IAU Body-Fixed Frame for Margaret".to_string(),
            PyFrame::Ferdinand => "IAU Body-Fixed Frame for Ferdinand".to_string(),
            PyFrame::Perdita => "IAU Body-Fixed Frame for Perdita".to_string(),
            PyFrame::Mab => "IAU Body-Fixed Frame for Mab".to_string(),
            PyFrame::Cupid => "IAU Body-Fixed Frame for Cupid".to_string(),
            PyFrame::Triton => "IAU Body-Fixed Frame for Triton".to_string(),
            PyFrame::Nereid => "IAU Body-Fixed Frame for Nereid".to_string(),
            PyFrame::Naiad => "IAU Body-Fixed Frame for Naiad".to_string(),
            PyFrame::Thalassa => "IAU Body-Fixed Frame for Thalassa".to_string(),
            PyFrame::Despina => "IAU Body-Fixed Frame for Despina".to_string(),
            PyFrame::Galatea => "IAU Body-Fixed Frame for Galatea".to_string(),
            PyFrame::Larissa => "IAU Body-Fixed Frame for Larissa".to_string(),
            PyFrame::Proteus => "IAU Body-Fixed Frame for Proteus".to_string(),
            PyFrame::Halimede => "IAU Body-Fixed Frame for Halimede".to_string(),
            PyFrame::Psamathe => "IAU Body-Fixed Frame for Psamathe".to_string(),
            PyFrame::Sao => "IAU Body-Fixed Frame for Sao".to_string(),
            PyFrame::Laomedeia => "IAU Body-Fixed Frame for Laomedeia".to_string(),
            PyFrame::Neso => "IAU Body-Fixed Frame for Neso".to_string(),
            PyFrame::Charon => "IAU Body-Fixed Frame for Charon".to_string(),
            PyFrame::Nix => "IAU Body-Fixed Frame for Nix".to_string(),
            PyFrame::Hydra => "IAU Body-Fixed Frame for Hydra".to_string(),
            PyFrame::Kerberos => "IAU Body-Fixed Frame for Kerberos".to_string(),
            PyFrame::Styx => "IAU Body-Fixed Frame for Styx".to_string(),
            PyFrame::Gaspra => "IAU Body-Fixed Frame for Gaspra".to_string(),
            PyFrame::Ida => "IAU Body-Fixed Frame for Ida".to_string(),
            PyFrame::Dactyl => "IAU Body-Fixed Frame for Dactyl".to_string(),
            PyFrame::Ceres => "IAU Body-Fixed Frame for Ceres".to_string(),
            PyFrame::Pallas => "IAU Body-Fixed Frame for Pallas".to_string(),
            PyFrame::Vesta => "IAU Body-Fixed Frame for Vesta".to_string(),
            PyFrame::Psyche => "IAU Body-Fixed Frame for Psyche".to_string(),
            PyFrame::Lutetia => "IAU Body-Fixed Frame for Lutetia".to_string(),
            PyFrame::Kleopatra => "IAU Body-Fixed Frame for Kleopatra".to_string(),
            PyFrame::Eros => "IAU Body-Fixed Frame for Eros".to_string(),
            PyFrame::Davida => "IAU Body-Fixed Frame for Davida".to_string(),
            PyFrame::Mathilde => "IAU Body-Fixed Frame for Mathilde".to_string(),
            PyFrame::Steins => "IAU Body-Fixed Frame for Steins".to_string(),
            PyFrame::Braille => "IAU Body-Fixed Frame for Braille".to_string(),
            PyFrame::WilsonHarrington => "IAU Body-Fixed Frame for Wilson-Harrington".to_string(),
            PyFrame::Toutatis => "IAU Body-Fixed Frame for Toutatis".to_string(),
            PyFrame::Itokawa => "IAU Body-Fixed Frame for Itokawa".to_string(),
            PyFrame::Bennu => "IAU Body-Fixed Frame for Bennu".to_string(),
        }
    }
    fn abbreviation(&self) -> String {
        match self {
            PyFrame::Icrf => "ICRF".to_string(),
            PyFrame::Sun => "IAU_SUN".to_string(),
            PyFrame::Mercury => "IAU_MERCURY".to_string(),
            PyFrame::Venus => "IAU_VENUS".to_string(),
            PyFrame::Earth => "IAU_EARTH".to_string(),
            PyFrame::Mars => "IAU_MARS".to_string(),
            PyFrame::Jupiter => "IAU_JUPITER".to_string(),
            PyFrame::Saturn => "IAU_SATURN".to_string(),
            PyFrame::Uranus => "IAU_URANUS".to_string(),
            PyFrame::Neptune => "IAU_NEPTUNE".to_string(),
            PyFrame::Pluto => "IAU_PLUTO".to_string(),
            PyFrame::Moon => "IAU_MOON".to_string(),
            PyFrame::Phobos => "IAU_PHOBOS".to_string(),
            PyFrame::Deimos => "IAU_DEIMOS".to_string(),
            PyFrame::Io => "IAU_IO".to_string(),
            PyFrame::Europa => "IAU_EUROPA".to_string(),
            PyFrame::Ganymede => "IAU_GANYMEDE".to_string(),
            PyFrame::Callisto => "IAU_CALLISTO".to_string(),
            PyFrame::Amalthea => "IAU_AMALTHEA".to_string(),
            PyFrame::Himalia => "IAU_HIMALIA".to_string(),
            PyFrame::Elara => "IAU_ELARA".to_string(),
            PyFrame::Pasiphae => "IAU_PASIPHAE".to_string(),
            PyFrame::Sinope => "IAU_SINOPE".to_string(),
            PyFrame::Lysithea => "IAU_LYSITHEA".to_string(),
            PyFrame::Carme => "IAU_CARME".to_string(),
            PyFrame::Ananke => "IAU_ANANKE".to_string(),
            PyFrame::Leda => "IAU_LEDA".to_string(),
            PyFrame::Thebe => "IAU_THEBE".to_string(),
            PyFrame::Adrastea => "IAU_ADRASTEA".to_string(),
            PyFrame::Metis => "IAU_METIS".to_string(),
            PyFrame::Callirrhoe => "IAU_CALLIRRHOE".to_string(),
            PyFrame::Themisto => "IAU_THEMISTO".to_string(),
            PyFrame::Magaclite => "IAU_MAGACLITE".to_string(),
            PyFrame::Taygete => "IAU_TAYGETE".to_string(),
            PyFrame::Chaldene => "IAU_CHALDENE".to_string(),
            PyFrame::Harpalyke => "IAU_HARPALYKE".to_string(),
            PyFrame::Kalyke => "IAU_KALYKE".to_string(),
            PyFrame::Iocaste => "IAU_IOCASTE".to_string(),
            PyFrame::Erinome => "IAU_ERINOME".to_string(),
            PyFrame::Isonoe => "IAU_ISONOE".to_string(),
            PyFrame::Praxidike => "IAU_PRAXIDIKE".to_string(),
            PyFrame::Autonoe => "IAU_AUTONOE".to_string(),
            PyFrame::Thyone => "IAU_THYONE".to_string(),
            PyFrame::Hermippe => "IAU_HERMIPPE".to_string(),
            PyFrame::Aitne => "IAU_AITNE".to_string(),
            PyFrame::Eurydome => "IAU_EURYDOME".to_string(),
            PyFrame::Euanthe => "IAU_EUANTHE".to_string(),
            PyFrame::Euporie => "IAU_EUPORIE".to_string(),
            PyFrame::Orthosie => "IAU_ORTHOSIE".to_string(),
            PyFrame::Sponde => "IAU_SPONDE".to_string(),
            PyFrame::Kale => "IAU_KALE".to_string(),
            PyFrame::Pasithee => "IAU_PASITHEE".to_string(),
            PyFrame::Hegemone => "IAU_HEGEMONE".to_string(),
            PyFrame::Mneme => "IAU_MNEME".to_string(),
            PyFrame::Aoede => "IAU_AOEDE".to_string(),
            PyFrame::Thelxinoe => "IAU_THELXINOE".to_string(),
            PyFrame::Arche => "IAU_ARCHE".to_string(),
            PyFrame::Kallichore => "IAU_KALLICHORE".to_string(),
            PyFrame::Helike => "IAU_HELIKE".to_string(),
            PyFrame::Carpo => "IAU_CARPO".to_string(),
            PyFrame::Eukelade => "IAU_EUKELADE".to_string(),
            PyFrame::Cyllene => "IAU_CYLLENE".to_string(),
            PyFrame::Kore => "IAU_KORE".to_string(),
            PyFrame::Herse => "IAU_HERSE".to_string(),
            PyFrame::Dia => "IAU_DIA".to_string(),
            PyFrame::Mimas => "IAU_MIMAS".to_string(),
            PyFrame::Enceladus => "IAU_ENCELADUS".to_string(),
            PyFrame::Tethys => "IAU_TETHYS".to_string(),
            PyFrame::Dione => "IAU_DIONE".to_string(),
            PyFrame::Rhea => "IAU_RHEA".to_string(),
            PyFrame::Titan => "IAU_TITAN".to_string(),
            PyFrame::Hyperion => "IAU_HYPERION".to_string(),
            PyFrame::Iapetus => "IAU_IAPETUS".to_string(),
            PyFrame::Phoebe => "IAU_PHOEBE".to_string(),
            PyFrame::Janus => "IAU_JANUS".to_string(),
            PyFrame::Epimetheus => "IAU_EPIMETHEUS".to_string(),
            PyFrame::Helene => "IAU_HELENE".to_string(),
            PyFrame::Telesto => "IAU_TELESTO".to_string(),
            PyFrame::Calypso => "IAU_CALYPSO".to_string(),
            PyFrame::Atlas => "IAU_ATLAS".to_string(),
            PyFrame::Prometheus => "IAU_PROMETHEUS".to_string(),
            PyFrame::Pandora => "IAU_PANDORA".to_string(),
            PyFrame::Pan => "IAU_PAN".to_string(),
            PyFrame::Ymir => "IAU_YMIR".to_string(),
            PyFrame::Paaliaq => "IAU_PAALIAQ".to_string(),
            PyFrame::Tarvos => "IAU_TARVOS".to_string(),
            PyFrame::Ijiraq => "IAU_IJIRAQ".to_string(),
            PyFrame::Suttungr => "IAU_SUTTUNGR".to_string(),
            PyFrame::Kiviuq => "IAU_KIVIUQ".to_string(),
            PyFrame::Mundilfari => "IAU_MUNDILFARI".to_string(),
            PyFrame::Albiorix => "IAU_ALBIORIX".to_string(),
            PyFrame::Skathi => "IAU_SKATHI".to_string(),
            PyFrame::Erriapus => "IAU_ERRIAPUS".to_string(),
            PyFrame::Siarnaq => "IAU_SIARNAQ".to_string(),
            PyFrame::Thrymr => "IAU_THRYMR".to_string(),
            PyFrame::Narvi => "IAU_NARVI".to_string(),
            PyFrame::Methone => "IAU_METHONE".to_string(),
            PyFrame::Pallene => "IAU_PALLENE".to_string(),
            PyFrame::Polydeuces => "IAU_POLYDEUCES".to_string(),
            PyFrame::Daphnis => "IAU_DAPHNIS".to_string(),
            PyFrame::Aegir => "IAU_AEGIR".to_string(),
            PyFrame::Bebhionn => "IAU_BEBHIONN".to_string(),
            PyFrame::Bergelmir => "IAU_BERGELMIR".to_string(),
            PyFrame::Bestla => "IAU_BESTLA".to_string(),
            PyFrame::Farbauti => "IAU_FARBAUTI".to_string(),
            PyFrame::Fenrir => "IAU_FENRIR".to_string(),
            PyFrame::Fornjot => "IAU_FORNJOT".to_string(),
            PyFrame::Hati => "IAU_HATI".to_string(),
            PyFrame::Hyrrokkin => "IAU_HYRROKKIN".to_string(),
            PyFrame::Kari => "IAU_KARI".to_string(),
            PyFrame::Loge => "IAU_LOGE".to_string(),
            PyFrame::Skoll => "IAU_SKOLL".to_string(),
            PyFrame::Surtur => "IAU_SURTUR".to_string(),
            PyFrame::Anthe => "IAU_ANTHE".to_string(),
            PyFrame::Jarnsaxa => "IAU_JARNSAXA".to_string(),
            PyFrame::Greip => "IAU_GREIP".to_string(),
            PyFrame::Tarqeq => "IAU_TARQEQ".to_string(),
            PyFrame::Aegaeon => "IAU_AEGAEON".to_string(),
            PyFrame::Ariel => "IAU_ARIEL".to_string(),
            PyFrame::Umbriel => "IAU_UMBRIEL".to_string(),
            PyFrame::Titania => "IAU_TITANIA".to_string(),
            PyFrame::Oberon => "IAU_OBERON".to_string(),
            PyFrame::Miranda => "IAU_MIRANDA".to_string(),
            PyFrame::Cordelia => "IAU_CORDELIA".to_string(),
            PyFrame::Ophelia => "IAU_OPHELIA".to_string(),
            PyFrame::Bianca => "IAU_BIANCA".to_string(),
            PyFrame::Cressida => "IAU_CRESSIDA".to_string(),
            PyFrame::Desdemona => "IAU_DESDEMONA".to_string(),
            PyFrame::Juliet => "IAU_JULIET".to_string(),
            PyFrame::Portia => "IAU_PORTIA".to_string(),
            PyFrame::Rosalind => "IAU_ROSALIND".to_string(),
            PyFrame::Belinda => "IAU_BELINDA".to_string(),
            PyFrame::Puck => "IAU_PUCK".to_string(),
            PyFrame::Caliban => "IAU_CALIBAN".to_string(),
            PyFrame::Sycorax => "IAU_SYCORAX".to_string(),
            PyFrame::Prospero => "IAU_PROSPERO".to_string(),
            PyFrame::Setebos => "IAU_SETEBOS".to_string(),
            PyFrame::Stephano => "IAU_STEPHANO".to_string(),
            PyFrame::Trinculo => "IAU_TRINCULO".to_string(),
            PyFrame::Francisco => "IAU_FRANCISCO".to_string(),
            PyFrame::Margaret => "IAU_MARGARET".to_string(),
            PyFrame::Ferdinand => "IAU_FERDINAND".to_string(),
            PyFrame::Perdita => "IAU_PERDITA".to_string(),
            PyFrame::Mab => "IAU_MAB".to_string(),
            PyFrame::Cupid => "IAU_CUPID".to_string(),
            PyFrame::Triton => "IAU_TRITON".to_string(),
            PyFrame::Nereid => "IAU_NEREID".to_string(),
            PyFrame::Naiad => "IAU_NAIAD".to_string(),
            PyFrame::Thalassa => "IAU_THALASSA".to_string(),
            PyFrame::Despina => "IAU_DESPINA".to_string(),
            PyFrame::Galatea => "IAU_GALATEA".to_string(),
            PyFrame::Larissa => "IAU_LARISSA".to_string(),
            PyFrame::Proteus => "IAU_PROTEUS".to_string(),
            PyFrame::Halimede => "IAU_HALIMEDE".to_string(),
            PyFrame::Psamathe => "IAU_PSAMATHE".to_string(),
            PyFrame::Sao => "IAU_SAO".to_string(),
            PyFrame::Laomedeia => "IAU_LAOMEDEIA".to_string(),
            PyFrame::Neso => "IAU_NESO".to_string(),
            PyFrame::Charon => "IAU_CHARON".to_string(),
            PyFrame::Nix => "IAU_NIX".to_string(),
            PyFrame::Hydra => "IAU_HYDRA".to_string(),
            PyFrame::Kerberos => "IAU_KERBEROS".to_string(),
            PyFrame::Styx => "IAU_STYX".to_string(),
            PyFrame::Gaspra => "IAU_GASPRA".to_string(),
            PyFrame::Ida => "IAU_IDA".to_string(),
            PyFrame::Dactyl => "IAU_DACTYL".to_string(),
            PyFrame::Ceres => "IAU_CERES".to_string(),
            PyFrame::Pallas => "IAU_PALLAS".to_string(),
            PyFrame::Vesta => "IAU_VESTA".to_string(),
            PyFrame::Psyche => "IAU_PSYCHE".to_string(),
            PyFrame::Lutetia => "IAU_LUTETIA".to_string(),
            PyFrame::Kleopatra => "IAU_KLEOPATRA".to_string(),
            PyFrame::Eros => "IAU_EROS".to_string(),
            PyFrame::Davida => "IAU_DAVIDA".to_string(),
            PyFrame::Mathilde => "IAU_MATHILDE".to_string(),
            PyFrame::Steins => "IAU_STEINS".to_string(),
            PyFrame::Braille => "IAU_BRAILLE".to_string(),
            PyFrame::WilsonHarrington => "IAU_WILSON_HARRINGTON".to_string(),
            PyFrame::Toutatis => "IAU_TOUTATIS".to_string(),
            PyFrame::Itokawa => "IAU_ITOKAWA".to_string(),
            PyFrame::Bennu => "IAU_BENNU".to_string(),
        }
    }
}
impl FromStr for PyFrame {
    type Err = PyErr;
    fn from_str(s: &str) -> Result<Self, Self::Err> {
        match s {
            "ICRF" | "icrf" => Ok(PyFrame::Icrf),
            "IAU_SUN" | "iau_sun" => Ok(PyFrame::Sun),
            "IAU_MERCURY" | "iau_mercury" => Ok(PyFrame::Mercury),
            "IAU_VENUS" | "iau_venus" => Ok(PyFrame::Venus),
            "IAU_EARTH" | "iau_earth" => Ok(PyFrame::Earth),
            "IAU_MARS" | "iau_mars" => Ok(PyFrame::Mars),
            "IAU_JUPITER" | "iau_jupiter" => Ok(PyFrame::Jupiter),
            "IAU_SATURN" | "iau_saturn" => Ok(PyFrame::Saturn),
            "IAU_URANUS" | "iau_uranus" => Ok(PyFrame::Uranus),
            "IAU_NEPTUNE" | "iau_neptune" => Ok(PyFrame::Neptune),
            "IAU_PLUTO" | "iau_pluto" => Ok(PyFrame::Pluto),
            "IAU_MOON" | "iau_moon" => Ok(PyFrame::Moon),
            "IAU_PHOBOS" | "iau_phobos" => Ok(PyFrame::Phobos),
            "IAU_DEIMOS" | "iau_deimos" => Ok(PyFrame::Deimos),
            "IAU_IO" | "iau_io" => Ok(PyFrame::Io),
            "IAU_EUROPA" | "iau_europa" => Ok(PyFrame::Europa),
            "IAU_GANYMEDE" | "iau_ganymede" => Ok(PyFrame::Ganymede),
            "IAU_CALLISTO" | "iau_callisto" => Ok(PyFrame::Callisto),
            "IAU_AMALTHEA" | "iau_amalthea" => Ok(PyFrame::Amalthea),
            "IAU_HIMALIA" | "iau_himalia" => Ok(PyFrame::Himalia),
            "IAU_ELARA" | "iau_elara" => Ok(PyFrame::Elara),
            "IAU_PASIPHAE" | "iau_pasiphae" => Ok(PyFrame::Pasiphae),
            "IAU_SINOPE" | "iau_sinope" => Ok(PyFrame::Sinope),
            "IAU_LYSITHEA" | "iau_lysithea" => Ok(PyFrame::Lysithea),
            "IAU_CARME" | "iau_carme" => Ok(PyFrame::Carme),
            "IAU_ANANKE" | "iau_ananke" => Ok(PyFrame::Ananke),
            "IAU_LEDA" | "iau_leda" => Ok(PyFrame::Leda),
            "IAU_THEBE" | "iau_thebe" => Ok(PyFrame::Thebe),
            "IAU_ADRASTEA" | "iau_adrastea" => Ok(PyFrame::Adrastea),
            "IAU_METIS" | "iau_metis" => Ok(PyFrame::Metis),
            "IAU_CALLIRRHOE" | "iau_callirrhoe" => Ok(PyFrame::Callirrhoe),
            "IAU_THEMISTO" | "iau_themisto" => Ok(PyFrame::Themisto),
            "IAU_MAGACLITE" | "iau_magaclite" => Ok(PyFrame::Magaclite),
            "IAU_TAYGETE" | "iau_taygete" => Ok(PyFrame::Taygete),
            "IAU_CHALDENE" | "iau_chaldene" => Ok(PyFrame::Chaldene),
            "IAU_HARPALYKE" | "iau_harpalyke" => Ok(PyFrame::Harpalyke),
            "IAU_KALYKE" | "iau_kalyke" => Ok(PyFrame::Kalyke),
            "IAU_IOCASTE" | "iau_iocaste" => Ok(PyFrame::Iocaste),
            "IAU_ERINOME" | "iau_erinome" => Ok(PyFrame::Erinome),
            "IAU_ISONOE" | "iau_isonoe" => Ok(PyFrame::Isonoe),
            "IAU_PRAXIDIKE" | "iau_praxidike" => Ok(PyFrame::Praxidike),
            "IAU_AUTONOE" | "iau_autonoe" => Ok(PyFrame::Autonoe),
            "IAU_THYONE" | "iau_thyone" => Ok(PyFrame::Thyone),
            "IAU_HERMIPPE" | "iau_hermippe" => Ok(PyFrame::Hermippe),
            "IAU_AITNE" | "iau_aitne" => Ok(PyFrame::Aitne),
            "IAU_EURYDOME" | "iau_eurydome" => Ok(PyFrame::Eurydome),
            "IAU_EUANTHE" | "iau_euanthe" => Ok(PyFrame::Euanthe),
            "IAU_EUPORIE" | "iau_euporie" => Ok(PyFrame::Euporie),
            "IAU_ORTHOSIE" | "iau_orthosie" => Ok(PyFrame::Orthosie),
            "IAU_SPONDE" | "iau_sponde" => Ok(PyFrame::Sponde),
            "IAU_KALE" | "iau_kale" => Ok(PyFrame::Kale),
            "IAU_PASITHEE" | "iau_pasithee" => Ok(PyFrame::Pasithee),
            "IAU_HEGEMONE" | "iau_hegemone" => Ok(PyFrame::Hegemone),
            "IAU_MNEME" | "iau_mneme" => Ok(PyFrame::Mneme),
            "IAU_AOEDE" | "iau_aoede" => Ok(PyFrame::Aoede),
            "IAU_THELXINOE" | "iau_thelxinoe" => Ok(PyFrame::Thelxinoe),
            "IAU_ARCHE" | "iau_arche" => Ok(PyFrame::Arche),
            "IAU_KALLICHORE" | "iau_kallichore" => Ok(PyFrame::Kallichore),
            "IAU_HELIKE" | "iau_helike" => Ok(PyFrame::Helike),
            "IAU_CARPO" | "iau_carpo" => Ok(PyFrame::Carpo),
            "IAU_EUKELADE" | "iau_eukelade" => Ok(PyFrame::Eukelade),
            "IAU_CYLLENE" | "iau_cyllene" => Ok(PyFrame::Cyllene),
            "IAU_KORE" | "iau_kore" => Ok(PyFrame::Kore),
            "IAU_HERSE" | "iau_herse" => Ok(PyFrame::Herse),
            "IAU_DIA" | "iau_dia" => Ok(PyFrame::Dia),
            "IAU_MIMAS" | "iau_mimas" => Ok(PyFrame::Mimas),
            "IAU_ENCELADUS" | "iau_enceladus" => Ok(PyFrame::Enceladus),
            "IAU_TETHYS" | "iau_tethys" => Ok(PyFrame::Tethys),
            "IAU_DIONE" | "iau_dione" => Ok(PyFrame::Dione),
            "IAU_RHEA" | "iau_rhea" => Ok(PyFrame::Rhea),
            "IAU_TITAN" | "iau_titan" => Ok(PyFrame::Titan),
            "IAU_HYPERION" | "iau_hyperion" => Ok(PyFrame::Hyperion),
            "IAU_IAPETUS" | "iau_iapetus" => Ok(PyFrame::Iapetus),
            "IAU_PHOEBE" | "iau_phoebe" => Ok(PyFrame::Phoebe),
            "IAU_JANUS" | "iau_janus" => Ok(PyFrame::Janus),
            "IAU_EPIMETHEUS" | "iau_epimetheus" => Ok(PyFrame::Epimetheus),
            "IAU_HELENE" | "iau_helene" => Ok(PyFrame::Helene),
            "IAU_TELESTO" | "iau_telesto" => Ok(PyFrame::Telesto),
            "IAU_CALYPSO" | "iau_calypso" => Ok(PyFrame::Calypso),
            "IAU_ATLAS" | "iau_atlas" => Ok(PyFrame::Atlas),
            "IAU_PROMETHEUS" | "iau_prometheus" => Ok(PyFrame::Prometheus),
            "IAU_PANDORA" | "iau_pandora" => Ok(PyFrame::Pandora),
            "IAU_PAN" | "iau_pan" => Ok(PyFrame::Pan),
            "IAU_YMIR" | "iau_ymir" => Ok(PyFrame::Ymir),
            "IAU_PAALIAQ" | "iau_paaliaq" => Ok(PyFrame::Paaliaq),
            "IAU_TARVOS" | "iau_tarvos" => Ok(PyFrame::Tarvos),
            "IAU_IJIRAQ" | "iau_ijiraq" => Ok(PyFrame::Ijiraq),
            "IAU_SUTTUNGR" | "iau_suttungr" => Ok(PyFrame::Suttungr),
            "IAU_KIVIUQ" | "iau_kiviuq" => Ok(PyFrame::Kiviuq),
            "IAU_MUNDILFARI" | "iau_mundilfari" => Ok(PyFrame::Mundilfari),
            "IAU_ALBIORIX" | "iau_albiorix" => Ok(PyFrame::Albiorix),
            "IAU_SKATHI" | "iau_skathi" => Ok(PyFrame::Skathi),
            "IAU_ERRIAPUS" | "iau_erriapus" => Ok(PyFrame::Erriapus),
            "IAU_SIARNAQ" | "iau_siarnaq" => Ok(PyFrame::Siarnaq),
            "IAU_THRYMR" | "iau_thrymr" => Ok(PyFrame::Thrymr),
            "IAU_NARVI" | "iau_narvi" => Ok(PyFrame::Narvi),
            "IAU_METHONE" | "iau_methone" => Ok(PyFrame::Methone),
            "IAU_PALLENE" | "iau_pallene" => Ok(PyFrame::Pallene),
            "IAU_POLYDEUCES" | "iau_polydeuces" => Ok(PyFrame::Polydeuces),
            "IAU_DAPHNIS" | "iau_daphnis" => Ok(PyFrame::Daphnis),
            "IAU_AEGIR" | "iau_aegir" => Ok(PyFrame::Aegir),
            "IAU_BEBHIONN" | "iau_bebhionn" => Ok(PyFrame::Bebhionn),
            "IAU_BERGELMIR" | "iau_bergelmir" => Ok(PyFrame::Bergelmir),
            "IAU_BESTLA" | "iau_bestla" => Ok(PyFrame::Bestla),
            "IAU_FARBAUTI" | "iau_farbauti" => Ok(PyFrame::Farbauti),
            "IAU_FENRIR" | "iau_fenrir" => Ok(PyFrame::Fenrir),
            "IAU_FORNJOT" | "iau_fornjot" => Ok(PyFrame::Fornjot),
            "IAU_HATI" | "iau_hati" => Ok(PyFrame::Hati),
            "IAU_HYRROKKIN" | "iau_hyrrokkin" => Ok(PyFrame::Hyrrokkin),
            "IAU_KARI" | "iau_kari" => Ok(PyFrame::Kari),
            "IAU_LOGE" | "iau_loge" => Ok(PyFrame::Loge),
            "IAU_SKOLL" | "iau_skoll" => Ok(PyFrame::Skoll),
            "IAU_SURTUR" | "iau_surtur" => Ok(PyFrame::Surtur),
            "IAU_ANTHE" | "iau_anthe" => Ok(PyFrame::Anthe),
            "IAU_JARNSAXA" | "iau_jarnsaxa" => Ok(PyFrame::Jarnsaxa),
            "IAU_GREIP" | "iau_greip" => Ok(PyFrame::Greip),
            "IAU_TARQEQ" | "iau_tarqeq" => Ok(PyFrame::Tarqeq),
            "IAU_AEGAEON" | "iau_aegaeon" => Ok(PyFrame::Aegaeon),
            "IAU_ARIEL" | "iau_ariel" => Ok(PyFrame::Ariel),
            "IAU_UMBRIEL" | "iau_umbriel" => Ok(PyFrame::Umbriel),
            "IAU_TITANIA" | "iau_titania" => Ok(PyFrame::Titania),
            "IAU_OBERON" | "iau_oberon" => Ok(PyFrame::Oberon),
            "IAU_MIRANDA" | "iau_miranda" => Ok(PyFrame::Miranda),
            "IAU_CORDELIA" | "iau_cordelia" => Ok(PyFrame::Cordelia),
            "IAU_OPHELIA" | "iau_ophelia" => Ok(PyFrame::Ophelia),
            "IAU_BIANCA" | "iau_bianca" => Ok(PyFrame::Bianca),
            "IAU_CRESSIDA" | "iau_cressida" => Ok(PyFrame::Cressida),
            "IAU_DESDEMONA" | "iau_desdemona" => Ok(PyFrame::Desdemona),
            "IAU_JULIET" | "iau_juliet" => Ok(PyFrame::Juliet),
            "IAU_PORTIA" | "iau_portia" => Ok(PyFrame::Portia),
            "IAU_ROSALIND" | "iau_rosalind" => Ok(PyFrame::Rosalind),
            "IAU_BELINDA" | "iau_belinda" => Ok(PyFrame::Belinda),
            "IAU_PUCK" | "iau_puck" => Ok(PyFrame::Puck),
            "IAU_CALIBAN" | "iau_caliban" => Ok(PyFrame::Caliban),
            "IAU_SYCORAX" | "iau_sycorax" => Ok(PyFrame::Sycorax),
            "IAU_PROSPERO" | "iau_prospero" => Ok(PyFrame::Prospero),
            "IAU_SETEBOS" | "iau_setebos" => Ok(PyFrame::Setebos),
            "IAU_STEPHANO" | "iau_stephano" => Ok(PyFrame::Stephano),
            "IAU_TRINCULO" | "iau_trinculo" => Ok(PyFrame::Trinculo),
            "IAU_FRANCISCO" | "iau_francisco" => Ok(PyFrame::Francisco),
            "IAU_MARGARET" | "iau_margaret" => Ok(PyFrame::Margaret),
            "IAU_FERDINAND" | "iau_ferdinand" => Ok(PyFrame::Ferdinand),
            "IAU_PERDITA" | "iau_perdita" => Ok(PyFrame::Perdita),
            "IAU_MAB" | "iau_mab" => Ok(PyFrame::Mab),
            "IAU_CUPID" | "iau_cupid" => Ok(PyFrame::Cupid),
            "IAU_TRITON" | "iau_triton" => Ok(PyFrame::Triton),
            "IAU_NEREID" | "iau_nereid" => Ok(PyFrame::Nereid),
            "IAU_NAIAD" | "iau_naiad" => Ok(PyFrame::Naiad),
            "IAU_THALASSA" | "iau_thalassa" => Ok(PyFrame::Thalassa),
            "IAU_DESPINA" | "iau_despina" => Ok(PyFrame::Despina),
            "IAU_GALATEA" | "iau_galatea" => Ok(PyFrame::Galatea),
            "IAU_LARISSA" | "iau_larissa" => Ok(PyFrame::Larissa),
            "IAU_PROTEUS" | "iau_proteus" => Ok(PyFrame::Proteus),
            "IAU_HALIMEDE" | "iau_halimede" => Ok(PyFrame::Halimede),
            "IAU_PSAMATHE" | "iau_psamathe" => Ok(PyFrame::Psamathe),
            "IAU_SAO" | "iau_sao" => Ok(PyFrame::Sao),
            "IAU_LAOMEDEIA" | "iau_laomedeia" => Ok(PyFrame::Laomedeia),
            "IAU_NESO" | "iau_neso" => Ok(PyFrame::Neso),
            "IAU_CHARON" | "iau_charon" => Ok(PyFrame::Charon),
            "IAU_NIX" | "iau_nix" => Ok(PyFrame::Nix),
            "IAU_HYDRA" | "iau_hydra" => Ok(PyFrame::Hydra),
            "IAU_KERBEROS" | "iau_kerberos" => Ok(PyFrame::Kerberos),
            "IAU_STYX" | "iau_styx" => Ok(PyFrame::Styx),
            "IAU_GASPRA" | "iau_gaspra" => Ok(PyFrame::Gaspra),
            "IAU_IDA" | "iau_ida" => Ok(PyFrame::Ida),
            "IAU_DACTYL" | "iau_dactyl" => Ok(PyFrame::Dactyl),
            "IAU_CERES" | "iau_ceres" => Ok(PyFrame::Ceres),
            "IAU_PALLAS" | "iau_pallas" => Ok(PyFrame::Pallas),
            "IAU_VESTA" | "iau_vesta" => Ok(PyFrame::Vesta),
            "IAU_PSYCHE" | "iau_psyche" => Ok(PyFrame::Psyche),
            "IAU_LUTETIA" | "iau_lutetia" => Ok(PyFrame::Lutetia),
            "IAU_KLEOPATRA" | "iau_kleopatra" => Ok(PyFrame::Kleopatra),
            "IAU_EROS" | "iau_eros" => Ok(PyFrame::Eros),
            "IAU_DAVIDA" | "iau_davida" => Ok(PyFrame::Davida),
            "IAU_MATHILDE" | "iau_mathilde" => Ok(PyFrame::Mathilde),
            "IAU_STEINS" | "iau_steins" => Ok(PyFrame::Steins),
            "IAU_BRAILLE" | "iau_braille" => Ok(PyFrame::Braille),
            "IAU_WILSON_HARRINGTON" | "iau_wilson_harrington" => Ok(PyFrame::WilsonHarrington),
            "IAU_TOUTATIS" | "iau_toutatis" => Ok(PyFrame::Toutatis),
            "IAU_ITOKAWA" | "iau_itokawa" => Ok(PyFrame::Itokawa),
            "IAU_BENNU" | "iau_bennu" => Ok(PyFrame::Bennu),
            _ => Err(PyValueError::new_err("unknown reference frame")),
        }
    }
}
#[cfg(test)]
#[allow(clippy::approx_constant)]
mod tests {
    use super::*;
    #[test]
    fn test_reference_frame_icrf() {
        assert_eq!(
            PyFrame::Icrf.name(),
            "International Celestial Reference Frame"
        );
        assert_eq!(PyFrame::Icrf.abbreviation(), "ICRF");
    }
    #[test]
    fn test_reference_frame_iau_sun() {
        assert_eq!(PyFrame::Sun.name(), "IAU Body-Fixed Frame for the Sun");
        assert_eq!(PyFrame::Sun.abbreviation(), "IAU_SUN");
    }
    #[test]
    fn test_reference_frame_iau_mercury() {
        assert_eq!(PyFrame::Mercury.name(), "IAU Body-Fixed Frame for Mercury");
        assert_eq!(PyFrame::Mercury.abbreviation(), "IAU_MERCURY");
    }
    #[test]
    fn test_reference_frame_iau_venus() {
        assert_eq!(PyFrame::Venus.name(), "IAU Body-Fixed Frame for Venus");
        assert_eq!(PyFrame::Venus.abbreviation(), "IAU_VENUS");
    }
    #[test]
    fn test_reference_frame_iau_earth() {
        assert_eq!(PyFrame::Earth.name(), "IAU Body-Fixed Frame for Earth");
        assert_eq!(PyFrame::Earth.abbreviation(), "IAU_EARTH");
    }
    #[test]
    fn test_reference_frame_iau_mars() {
        assert_eq!(PyFrame::Mars.name(), "IAU Body-Fixed Frame for Mars");
        assert_eq!(PyFrame::Mars.abbreviation(), "IAU_MARS");
    }
    #[test]
    fn test_reference_frame_iau_jupiter() {
        assert_eq!(PyFrame::Jupiter.name(), "IAU Body-Fixed Frame for Jupiter");
        assert_eq!(PyFrame::Jupiter.abbreviation(), "IAU_JUPITER");
    }
    #[test]
    fn test_reference_frame_iau_saturn() {
        assert_eq!(PyFrame::Saturn.name(), "IAU Body-Fixed Frame for Saturn");
        assert_eq!(PyFrame::Saturn.abbreviation(), "IAU_SATURN");
    }
    #[test]
    fn test_reference_frame_iau_uranus() {
        assert_eq!(PyFrame::Uranus.name(), "IAU Body-Fixed Frame for Uranus");
        assert_eq!(PyFrame::Uranus.abbreviation(), "IAU_URANUS");
    }
    #[test]
    fn test_reference_frame_iau_neptune() {
        assert_eq!(PyFrame::Neptune.name(), "IAU Body-Fixed Frame for Neptune");
        assert_eq!(PyFrame::Neptune.abbreviation(), "IAU_NEPTUNE");
    }
    #[test]
    fn test_reference_frame_iau_pluto() {
        assert_eq!(PyFrame::Pluto.name(), "IAU Body-Fixed Frame for Pluto");
        assert_eq!(PyFrame::Pluto.abbreviation(), "IAU_PLUTO");
    }
    #[test]
    fn test_reference_frame_iau_moon() {
        assert_eq!(PyFrame::Moon.name(), "IAU Body-Fixed Frame for the Moon");
        assert_eq!(PyFrame::Moon.abbreviation(), "IAU_MOON");
    }
    #[test]
    fn test_reference_frame_iau_phobos() {
        assert_eq!(PyFrame::Phobos.name(), "IAU Body-Fixed Frame for Phobos");
        assert_eq!(PyFrame::Phobos.abbreviation(), "IAU_PHOBOS");
    }
    #[test]
    fn test_reference_frame_iau_deimos() {
        assert_eq!(PyFrame::Deimos.name(), "IAU Body-Fixed Frame for Deimos");
        assert_eq!(PyFrame::Deimos.abbreviation(), "IAU_DEIMOS");
    }
    #[test]
    fn test_reference_frame_iau_io() {
        assert_eq!(PyFrame::Io.name(), "IAU Body-Fixed Frame for Io");
        assert_eq!(PyFrame::Io.abbreviation(), "IAU_IO");
    }
    #[test]
    fn test_reference_frame_iau_europa() {
        assert_eq!(PyFrame::Europa.name(), "IAU Body-Fixed Frame for Europa");
        assert_eq!(PyFrame::Europa.abbreviation(), "IAU_EUROPA");
    }
    #[test]
    fn test_reference_frame_iau_ganymede() {
        assert_eq!(
            PyFrame::Ganymede.name(),
            "IAU Body-Fixed Frame for Ganymede"
        );
        assert_eq!(PyFrame::Ganymede.abbreviation(), "IAU_GANYMEDE");
    }
    #[test]
    fn test_reference_frame_iau_callisto() {
        assert_eq!(
            PyFrame::Callisto.name(),
            "IAU Body-Fixed Frame for Callisto"
        );
        assert_eq!(PyFrame::Callisto.abbreviation(), "IAU_CALLISTO");
    }
    #[test]
    fn test_reference_frame_iau_amalthea() {
        assert_eq!(
            PyFrame::Amalthea.name(),
            "IAU Body-Fixed Frame for Amalthea"
        );
        assert_eq!(PyFrame::Amalthea.abbreviation(), "IAU_AMALTHEA");
    }
    #[test]
    fn test_reference_frame_iau_himalia() {
        assert_eq!(PyFrame::Himalia.name(), "IAU Body-Fixed Frame for Himalia");
        assert_eq!(PyFrame::Himalia.abbreviation(), "IAU_HIMALIA");
    }
    #[test]
    fn test_reference_frame_iau_elara() {
        assert_eq!(PyFrame::Elara.name(), "IAU Body-Fixed Frame for Elara");
        assert_eq!(PyFrame::Elara.abbreviation(), "IAU_ELARA");
    }
    #[test]
    fn test_reference_frame_iau_pasiphae() {
        assert_eq!(
            PyFrame::Pasiphae.name(),
            "IAU Body-Fixed Frame for Pasiphae"
        );
        assert_eq!(PyFrame::Pasiphae.abbreviation(), "IAU_PASIPHAE");
    }
    #[test]
    fn test_reference_frame_iau_sinope() {
        assert_eq!(PyFrame::Sinope.name(), "IAU Body-Fixed Frame for Sinope");
        assert_eq!(PyFrame::Sinope.abbreviation(), "IAU_SINOPE");
    }
    #[test]
    fn test_reference_frame_iau_lysithea() {
        assert_eq!(
            PyFrame::Lysithea.name(),
            "IAU Body-Fixed Frame for Lysithea"
        );
        assert_eq!(PyFrame::Lysithea.abbreviation(), "IAU_LYSITHEA");
    }
    #[test]
    fn test_reference_frame_iau_carme() {
        assert_eq!(PyFrame::Carme.name(), "IAU Body-Fixed Frame for Carme");
        assert_eq!(PyFrame::Carme.abbreviation(), "IAU_CARME");
    }
    #[test]
    fn test_reference_frame_iau_ananke() {
        assert_eq!(PyFrame::Ananke.name(), "IAU Body-Fixed Frame for Ananke");
        assert_eq!(PyFrame::Ananke.abbreviation(), "IAU_ANANKE");
    }
    #[test]
    fn test_reference_frame_iau_leda() {
        assert_eq!(PyFrame::Leda.name(), "IAU Body-Fixed Frame for Leda");
        assert_eq!(PyFrame::Leda.abbreviation(), "IAU_LEDA");
    }
    #[test]
    fn test_reference_frame_iau_thebe() {
        assert_eq!(PyFrame::Thebe.name(), "IAU Body-Fixed Frame for Thebe");
        assert_eq!(PyFrame::Thebe.abbreviation(), "IAU_THEBE");
    }
    #[test]
    fn test_reference_frame_iau_adrastea() {
        assert_eq!(
            PyFrame::Adrastea.name(),
            "IAU Body-Fixed Frame for Adrastea"
        );
        assert_eq!(PyFrame::Adrastea.abbreviation(), "IAU_ADRASTEA");
    }
    #[test]
    fn test_reference_frame_iau_metis() {
        assert_eq!(PyFrame::Metis.name(), "IAU Body-Fixed Frame for Metis");
        assert_eq!(PyFrame::Metis.abbreviation(), "IAU_METIS");
    }
    #[test]
    fn test_reference_frame_iau_callirrhoe() {
        assert_eq!(
            PyFrame::Callirrhoe.name(),
            "IAU Body-Fixed Frame for Callirrhoe"
        );
        assert_eq!(PyFrame::Callirrhoe.abbreviation(), "IAU_CALLIRRHOE");
    }
    #[test]
    fn test_reference_frame_iau_themisto() {
        assert_eq!(
            PyFrame::Themisto.name(),
            "IAU Body-Fixed Frame for Themisto"
        );
        assert_eq!(PyFrame::Themisto.abbreviation(), "IAU_THEMISTO");
    }
    #[test]
    fn test_reference_frame_iau_magaclite() {
        assert_eq!(
            PyFrame::Magaclite.name(),
            "IAU Body-Fixed Frame for Magaclite"
        );
        assert_eq!(PyFrame::Magaclite.abbreviation(), "IAU_MAGACLITE");
    }
    #[test]
    fn test_reference_frame_iau_taygete() {
        assert_eq!(PyFrame::Taygete.name(), "IAU Body-Fixed Frame for Taygete");
        assert_eq!(PyFrame::Taygete.abbreviation(), "IAU_TAYGETE");
    }
    #[test]
    fn test_reference_frame_iau_chaldene() {
        assert_eq!(
            PyFrame::Chaldene.name(),
            "IAU Body-Fixed Frame for Chaldene"
        );
        assert_eq!(PyFrame::Chaldene.abbreviation(), "IAU_CHALDENE");
    }
    #[test]
    fn test_reference_frame_iau_harpalyke() {
        assert_eq!(
            PyFrame::Harpalyke.name(),
            "IAU Body-Fixed Frame for Harpalyke"
        );
        assert_eq!(PyFrame::Harpalyke.abbreviation(), "IAU_HARPALYKE");
    }
    #[test]
    fn test_reference_frame_iau_kalyke() {
        assert_eq!(PyFrame::Kalyke.name(), "IAU Body-Fixed Frame for Kalyke");
        assert_eq!(PyFrame::Kalyke.abbreviation(), "IAU_KALYKE");
    }
    #[test]
    fn test_reference_frame_iau_iocaste() {
        assert_eq!(PyFrame::Iocaste.name(), "IAU Body-Fixed Frame for Iocaste");
        assert_eq!(PyFrame::Iocaste.abbreviation(), "IAU_IOCASTE");
    }
    #[test]
    fn test_reference_frame_iau_erinome() {
        assert_eq!(PyFrame::Erinome.name(), "IAU Body-Fixed Frame for Erinome");
        assert_eq!(PyFrame::Erinome.abbreviation(), "IAU_ERINOME");
    }
    #[test]
    fn test_reference_frame_iau_isonoe() {
        assert_eq!(PyFrame::Isonoe.name(), "IAU Body-Fixed Frame for Isonoe");
        assert_eq!(PyFrame::Isonoe.abbreviation(), "IAU_ISONOE");
    }
    #[test]
    fn test_reference_frame_iau_praxidike() {
        assert_eq!(
            PyFrame::Praxidike.name(),
            "IAU Body-Fixed Frame for Praxidike"
        );
        assert_eq!(PyFrame::Praxidike.abbreviation(), "IAU_PRAXIDIKE");
    }
    #[test]
    fn test_reference_frame_iau_autonoe() {
        assert_eq!(PyFrame::Autonoe.name(), "IAU Body-Fixed Frame for Autonoe");
        assert_eq!(PyFrame::Autonoe.abbreviation(), "IAU_AUTONOE");
    }
    #[test]
    fn test_reference_frame_iau_thyone() {
        assert_eq!(PyFrame::Thyone.name(), "IAU Body-Fixed Frame for Thyone");
        assert_eq!(PyFrame::Thyone.abbreviation(), "IAU_THYONE");
    }
    #[test]
    fn test_reference_frame_iau_hermippe() {
        assert_eq!(
            PyFrame::Hermippe.name(),
            "IAU Body-Fixed Frame for Hermippe"
        );
        assert_eq!(PyFrame::Hermippe.abbreviation(), "IAU_HERMIPPE");
    }
    #[test]
    fn test_reference_frame_iau_aitne() {
        assert_eq!(PyFrame::Aitne.name(), "IAU Body-Fixed Frame for Aitne");
        assert_eq!(PyFrame::Aitne.abbreviation(), "IAU_AITNE");
    }
    #[test]
    fn test_reference_frame_iau_eurydome() {
        assert_eq!(
            PyFrame::Eurydome.name(),
            "IAU Body-Fixed Frame for Eurydome"
        );
        assert_eq!(PyFrame::Eurydome.abbreviation(), "IAU_EURYDOME");
    }
    #[test]
    fn test_reference_frame_iau_euanthe() {
        assert_eq!(PyFrame::Euanthe.name(), "IAU Body-Fixed Frame for Euanthe");
        assert_eq!(PyFrame::Euanthe.abbreviation(), "IAU_EUANTHE");
    }
    #[test]
    fn test_reference_frame_iau_euporie() {
        assert_eq!(PyFrame::Euporie.name(), "IAU Body-Fixed Frame for Euporie");
        assert_eq!(PyFrame::Euporie.abbreviation(), "IAU_EUPORIE");
    }
    #[test]
    fn test_reference_frame_iau_orthosie() {
        assert_eq!(
            PyFrame::Orthosie.name(),
            "IAU Body-Fixed Frame for Orthosie"
        );
        assert_eq!(PyFrame::Orthosie.abbreviation(), "IAU_ORTHOSIE");
    }
    #[test]
    fn test_reference_frame_iau_sponde() {
        assert_eq!(PyFrame::Sponde.name(), "IAU Body-Fixed Frame for Sponde");
        assert_eq!(PyFrame::Sponde.abbreviation(), "IAU_SPONDE");
    }
    #[test]
    fn test_reference_frame_iau_kale() {
        assert_eq!(PyFrame::Kale.name(), "IAU Body-Fixed Frame for Kale");
        assert_eq!(PyFrame::Kale.abbreviation(), "IAU_KALE");
    }
    #[test]
    fn test_reference_frame_iau_pasithee() {
        assert_eq!(
            PyFrame::Pasithee.name(),
            "IAU Body-Fixed Frame for Pasithee"
        );
        assert_eq!(PyFrame::Pasithee.abbreviation(), "IAU_PASITHEE");
    }
    #[test]
    fn test_reference_frame_iau_hegemone() {
        assert_eq!(
            PyFrame::Hegemone.name(),
            "IAU Body-Fixed Frame for Hegemone"
        );
        assert_eq!(PyFrame::Hegemone.abbreviation(), "IAU_HEGEMONE");
    }
    #[test]
    fn test_reference_frame_iau_mneme() {
        assert_eq!(PyFrame::Mneme.name(), "IAU Body-Fixed Frame for Mneme");
        assert_eq!(PyFrame::Mneme.abbreviation(), "IAU_MNEME");
    }
    #[test]
    fn test_reference_frame_iau_aoede() {
        assert_eq!(PyFrame::Aoede.name(), "IAU Body-Fixed Frame for Aoede");
        assert_eq!(PyFrame::Aoede.abbreviation(), "IAU_AOEDE");
    }
    #[test]
    fn test_reference_frame_iau_thelxinoe() {
        assert_eq!(
            PyFrame::Thelxinoe.name(),
            "IAU Body-Fixed Frame for Thelxinoe"
        );
        assert_eq!(PyFrame::Thelxinoe.abbreviation(), "IAU_THELXINOE");
    }
    #[test]
    fn test_reference_frame_iau_arche() {
        assert_eq!(PyFrame::Arche.name(), "IAU Body-Fixed Frame for Arche");
        assert_eq!(PyFrame::Arche.abbreviation(), "IAU_ARCHE");
    }
    #[test]
    fn test_reference_frame_iau_kallichore() {
        assert_eq!(
            PyFrame::Kallichore.name(),
            "IAU Body-Fixed Frame for Kallichore"
        );
        assert_eq!(PyFrame::Kallichore.abbreviation(), "IAU_KALLICHORE");
    }
    #[test]
    fn test_reference_frame_iau_helike() {
        assert_eq!(PyFrame::Helike.name(), "IAU Body-Fixed Frame for Helike");
        assert_eq!(PyFrame::Helike.abbreviation(), "IAU_HELIKE");
    }
    #[test]
    fn test_reference_frame_iau_carpo() {
        assert_eq!(PyFrame::Carpo.name(), "IAU Body-Fixed Frame for Carpo");
        assert_eq!(PyFrame::Carpo.abbreviation(), "IAU_CARPO");
    }
    #[test]
    fn test_reference_frame_iau_eukelade() {
        assert_eq!(
            PyFrame::Eukelade.name(),
            "IAU Body-Fixed Frame for Eukelade"
        );
        assert_eq!(PyFrame::Eukelade.abbreviation(), "IAU_EUKELADE");
    }
    #[test]
    fn test_reference_frame_iau_cyllene() {
        assert_eq!(PyFrame::Cyllene.name(), "IAU Body-Fixed Frame for Cyllene");
        assert_eq!(PyFrame::Cyllene.abbreviation(), "IAU_CYLLENE");
    }
    #[test]
    fn test_reference_frame_iau_kore() {
        assert_eq!(PyFrame::Kore.name(), "IAU Body-Fixed Frame for Kore");
        assert_eq!(PyFrame::Kore.abbreviation(), "IAU_KORE");
    }
    #[test]
    fn test_reference_frame_iau_herse() {
        assert_eq!(PyFrame::Herse.name(), "IAU Body-Fixed Frame for Herse");
        assert_eq!(PyFrame::Herse.abbreviation(), "IAU_HERSE");
    }
    #[test]
    fn test_reference_frame_iau_dia() {
        assert_eq!(PyFrame::Dia.name(), "IAU Body-Fixed Frame for Dia");
        assert_eq!(PyFrame::Dia.abbreviation(), "IAU_DIA");
    }
    #[test]
    fn test_reference_frame_iau_mimas() {
        assert_eq!(PyFrame::Mimas.name(), "IAU Body-Fixed Frame for Mimas");
        assert_eq!(PyFrame::Mimas.abbreviation(), "IAU_MIMAS");
    }
    #[test]
    fn test_reference_frame_iau_enceladus() {
        assert_eq!(
            PyFrame::Enceladus.name(),
            "IAU Body-Fixed Frame for Enceladus"
        );
        assert_eq!(PyFrame::Enceladus.abbreviation(), "IAU_ENCELADUS");
    }
    #[test]
    fn test_reference_frame_iau_tethys() {
        assert_eq!(PyFrame::Tethys.name(), "IAU Body-Fixed Frame for Tethys");
        assert_eq!(PyFrame::Tethys.abbreviation(), "IAU_TETHYS");
    }
    #[test]
    fn test_reference_frame_iau_dione() {
        assert_eq!(PyFrame::Dione.name(), "IAU Body-Fixed Frame for Dione");
        assert_eq!(PyFrame::Dione.abbreviation(), "IAU_DIONE");
    }
    #[test]
    fn test_reference_frame_iau_rhea() {
        assert_eq!(PyFrame::Rhea.name(), "IAU Body-Fixed Frame for Rhea");
        assert_eq!(PyFrame::Rhea.abbreviation(), "IAU_RHEA");
    }
    #[test]
    fn test_reference_frame_iau_titan() {
        assert_eq!(PyFrame::Titan.name(), "IAU Body-Fixed Frame for Titan");
        assert_eq!(PyFrame::Titan.abbreviation(), "IAU_TITAN");
    }
    #[test]
    fn test_reference_frame_iau_hyperion() {
        assert_eq!(
            PyFrame::Hyperion.name(),
            "IAU Body-Fixed Frame for Hyperion"
        );
        assert_eq!(PyFrame::Hyperion.abbreviation(), "IAU_HYPERION");
    }
    #[test]
    fn test_reference_frame_iau_iapetus() {
        assert_eq!(PyFrame::Iapetus.name(), "IAU Body-Fixed Frame for Iapetus");
        assert_eq!(PyFrame::Iapetus.abbreviation(), "IAU_IAPETUS");
    }
    #[test]
    fn test_reference_frame_iau_phoebe() {
        assert_eq!(PyFrame::Phoebe.name(), "IAU Body-Fixed Frame for Phoebe");
        assert_eq!(PyFrame::Phoebe.abbreviation(), "IAU_PHOEBE");
    }
    #[test]
    fn test_reference_frame_iau_janus() {
        assert_eq!(PyFrame::Janus.name(), "IAU Body-Fixed Frame for Janus");
        assert_eq!(PyFrame::Janus.abbreviation(), "IAU_JANUS");
    }
    #[test]
    fn test_reference_frame_iau_epimetheus() {
        assert_eq!(
            PyFrame::Epimetheus.name(),
            "IAU Body-Fixed Frame for Epimetheus"
        );
        assert_eq!(PyFrame::Epimetheus.abbreviation(), "IAU_EPIMETHEUS");
    }
    #[test]
    fn test_reference_frame_iau_helene() {
        assert_eq!(PyFrame::Helene.name(), "IAU Body-Fixed Frame for Helene");
        assert_eq!(PyFrame::Helene.abbreviation(), "IAU_HELENE");
    }
    #[test]
    fn test_reference_frame_iau_telesto() {
        assert_eq!(PyFrame::Telesto.name(), "IAU Body-Fixed Frame for Telesto");
        assert_eq!(PyFrame::Telesto.abbreviation(), "IAU_TELESTO");
    }
    #[test]
    fn test_reference_frame_iau_calypso() {
        assert_eq!(PyFrame::Calypso.name(), "IAU Body-Fixed Frame for Calypso");
        assert_eq!(PyFrame::Calypso.abbreviation(), "IAU_CALYPSO");
    }
    #[test]
    fn test_reference_frame_iau_atlas() {
        assert_eq!(PyFrame::Atlas.name(), "IAU Body-Fixed Frame for Atlas");
        assert_eq!(PyFrame::Atlas.abbreviation(), "IAU_ATLAS");
    }
    #[test]
    fn test_reference_frame_iau_prometheus() {
        assert_eq!(
            PyFrame::Prometheus.name(),
            "IAU Body-Fixed Frame for Prometheus"
        );
        assert_eq!(PyFrame::Prometheus.abbreviation(), "IAU_PROMETHEUS");
    }
    #[test]
    fn test_reference_frame_iau_pandora() {
        assert_eq!(PyFrame::Pandora.name(), "IAU Body-Fixed Frame for Pandora");
        assert_eq!(PyFrame::Pandora.abbreviation(), "IAU_PANDORA");
    }
    #[test]
    fn test_reference_frame_iau_pan() {
        assert_eq!(PyFrame::Pan.name(), "IAU Body-Fixed Frame for Pan");
        assert_eq!(PyFrame::Pan.abbreviation(), "IAU_PAN");
    }
    #[test]
    fn test_reference_frame_iau_ymir() {
        assert_eq!(PyFrame::Ymir.name(), "IAU Body-Fixed Frame for Ymir");
        assert_eq!(PyFrame::Ymir.abbreviation(), "IAU_YMIR");
    }
    #[test]
    fn test_reference_frame_iau_paaliaq() {
        assert_eq!(PyFrame::Paaliaq.name(), "IAU Body-Fixed Frame for Paaliaq");
        assert_eq!(PyFrame::Paaliaq.abbreviation(), "IAU_PAALIAQ");
    }
    #[test]
    fn test_reference_frame_iau_tarvos() {
        assert_eq!(PyFrame::Tarvos.name(), "IAU Body-Fixed Frame for Tarvos");
        assert_eq!(PyFrame::Tarvos.abbreviation(), "IAU_TARVOS");
    }
    #[test]
    fn test_reference_frame_iau_ijiraq() {
        assert_eq!(PyFrame::Ijiraq.name(), "IAU Body-Fixed Frame for Ijiraq");
        assert_eq!(PyFrame::Ijiraq.abbreviation(), "IAU_IJIRAQ");
    }
    #[test]
    fn test_reference_frame_iau_suttungr() {
        assert_eq!(
            PyFrame::Suttungr.name(),
            "IAU Body-Fixed Frame for Suttungr"
        );
        assert_eq!(PyFrame::Suttungr.abbreviation(), "IAU_SUTTUNGR");
    }
    #[test]
    fn test_reference_frame_iau_kiviuq() {
        assert_eq!(PyFrame::Kiviuq.name(), "IAU Body-Fixed Frame for Kiviuq");
        assert_eq!(PyFrame::Kiviuq.abbreviation(), "IAU_KIVIUQ");
    }
    #[test]
    fn test_reference_frame_iau_mundilfari() {
        assert_eq!(
            PyFrame::Mundilfari.name(),
            "IAU Body-Fixed Frame for Mundilfari"
        );
        assert_eq!(PyFrame::Mundilfari.abbreviation(), "IAU_MUNDILFARI");
    }
    #[test]
    fn test_reference_frame_iau_albiorix() {
        assert_eq!(
            PyFrame::Albiorix.name(),
            "IAU Body-Fixed Frame for Albiorix"
        );
        assert_eq!(PyFrame::Albiorix.abbreviation(), "IAU_ALBIORIX");
    }
    #[test]
    fn test_reference_frame_iau_skathi() {
        assert_eq!(PyFrame::Skathi.name(), "IAU Body-Fixed Frame for Skathi");
        assert_eq!(PyFrame::Skathi.abbreviation(), "IAU_SKATHI");
    }
    #[test]
    fn test_reference_frame_iau_erriapus() {
        assert_eq!(
            PyFrame::Erriapus.name(),
            "IAU Body-Fixed Frame for Erriapus"
        );
        assert_eq!(PyFrame::Erriapus.abbreviation(), "IAU_ERRIAPUS");
    }
    #[test]
    fn test_reference_frame_iau_siarnaq() {
        assert_eq!(PyFrame::Siarnaq.name(), "IAU Body-Fixed Frame for Siarnaq");
        assert_eq!(PyFrame::Siarnaq.abbreviation(), "IAU_SIARNAQ");
    }
    #[test]
    fn test_reference_frame_iau_thrymr() {
        assert_eq!(PyFrame::Thrymr.name(), "IAU Body-Fixed Frame for Thrymr");
        assert_eq!(PyFrame::Thrymr.abbreviation(), "IAU_THRYMR");
    }
    #[test]
    fn test_reference_frame_iau_narvi() {
        assert_eq!(PyFrame::Narvi.name(), "IAU Body-Fixed Frame for Narvi");
        assert_eq!(PyFrame::Narvi.abbreviation(), "IAU_NARVI");
    }
    #[test]
    fn test_reference_frame_iau_methone() {
        assert_eq!(PyFrame::Methone.name(), "IAU Body-Fixed Frame for Methone");
        assert_eq!(PyFrame::Methone.abbreviation(), "IAU_METHONE");
    }
    #[test]
    fn test_reference_frame_iau_pallene() {
        assert_eq!(PyFrame::Pallene.name(), "IAU Body-Fixed Frame for Pallene");
        assert_eq!(PyFrame::Pallene.abbreviation(), "IAU_PALLENE");
    }
    #[test]
    fn test_reference_frame_iau_polydeuces() {
        assert_eq!(
            PyFrame::Polydeuces.name(),
            "IAU Body-Fixed Frame for Polydeuces"
        );
        assert_eq!(PyFrame::Polydeuces.abbreviation(), "IAU_POLYDEUCES");
    }
    #[test]
    fn test_reference_frame_iau_daphnis() {
        assert_eq!(PyFrame::Daphnis.name(), "IAU Body-Fixed Frame for Daphnis");
        assert_eq!(PyFrame::Daphnis.abbreviation(), "IAU_DAPHNIS");
    }
    #[test]
    fn test_reference_frame_iau_aegir() {
        assert_eq!(PyFrame::Aegir.name(), "IAU Body-Fixed Frame for Aegir");
        assert_eq!(PyFrame::Aegir.abbreviation(), "IAU_AEGIR");
    }
    #[test]
    fn test_reference_frame_iau_bebhionn() {
        assert_eq!(
            PyFrame::Bebhionn.name(),
            "IAU Body-Fixed Frame for Bebhionn"
        );
        assert_eq!(PyFrame::Bebhionn.abbreviation(), "IAU_BEBHIONN");
    }
    #[test]
    fn test_reference_frame_iau_bergelmir() {
        assert_eq!(
            PyFrame::Bergelmir.name(),
            "IAU Body-Fixed Frame for Bergelmir"
        );
        assert_eq!(PyFrame::Bergelmir.abbreviation(), "IAU_BERGELMIR");
    }
    #[test]
    fn test_reference_frame_iau_bestla() {
        assert_eq!(PyFrame::Bestla.name(), "IAU Body-Fixed Frame for Bestla");
        assert_eq!(PyFrame::Bestla.abbreviation(), "IAU_BESTLA");
    }
    #[test]
    fn test_reference_frame_iau_farbauti() {
        assert_eq!(
            PyFrame::Farbauti.name(),
            "IAU Body-Fixed Frame for Farbauti"
        );
        assert_eq!(PyFrame::Farbauti.abbreviation(), "IAU_FARBAUTI");
    }
    #[test]
    fn test_reference_frame_iau_fenrir() {
        assert_eq!(PyFrame::Fenrir.name(), "IAU Body-Fixed Frame for Fenrir");
        assert_eq!(PyFrame::Fenrir.abbreviation(), "IAU_FENRIR");
    }
    #[test]
    fn test_reference_frame_iau_fornjot() {
        assert_eq!(PyFrame::Fornjot.name(), "IAU Body-Fixed Frame for Fornjot");
        assert_eq!(PyFrame::Fornjot.abbreviation(), "IAU_FORNJOT");
    }
    #[test]
    fn test_reference_frame_iau_hati() {
        assert_eq!(PyFrame::Hati.name(), "IAU Body-Fixed Frame for Hati");
        assert_eq!(PyFrame::Hati.abbreviation(), "IAU_HATI");
    }
    #[test]
    fn test_reference_frame_iau_hyrrokkin() {
        assert_eq!(
            PyFrame::Hyrrokkin.name(),
            "IAU Body-Fixed Frame for Hyrrokkin"
        );
        assert_eq!(PyFrame::Hyrrokkin.abbreviation(), "IAU_HYRROKKIN");
    }
    #[test]
    fn test_reference_frame_iau_kari() {
        assert_eq!(PyFrame::Kari.name(), "IAU Body-Fixed Frame for Kari");
        assert_eq!(PyFrame::Kari.abbreviation(), "IAU_KARI");
    }
    #[test]
    fn test_reference_frame_iau_loge() {
        assert_eq!(PyFrame::Loge.name(), "IAU Body-Fixed Frame for Loge");
        assert_eq!(PyFrame::Loge.abbreviation(), "IAU_LOGE");
    }
    #[test]
    fn test_reference_frame_iau_skoll() {
        assert_eq!(PyFrame::Skoll.name(), "IAU Body-Fixed Frame for Skoll");
        assert_eq!(PyFrame::Skoll.abbreviation(), "IAU_SKOLL");
    }
    #[test]
    fn test_reference_frame_iau_surtur() {
        assert_eq!(PyFrame::Surtur.name(), "IAU Body-Fixed Frame for Surtur");
        assert_eq!(PyFrame::Surtur.abbreviation(), "IAU_SURTUR");
    }
    #[test]
    fn test_reference_frame_iau_anthe() {
        assert_eq!(PyFrame::Anthe.name(), "IAU Body-Fixed Frame for Anthe");
        assert_eq!(PyFrame::Anthe.abbreviation(), "IAU_ANTHE");
    }
    #[test]
    fn test_reference_frame_iau_jarnsaxa() {
        assert_eq!(
            PyFrame::Jarnsaxa.name(),
            "IAU Body-Fixed Frame for Jarnsaxa"
        );
        assert_eq!(PyFrame::Jarnsaxa.abbreviation(), "IAU_JARNSAXA");
    }
    #[test]
    fn test_reference_frame_iau_greip() {
        assert_eq!(PyFrame::Greip.name(), "IAU Body-Fixed Frame for Greip");
        assert_eq!(PyFrame::Greip.abbreviation(), "IAU_GREIP");
    }
    #[test]
    fn test_reference_frame_iau_tarqeq() {
        assert_eq!(PyFrame::Tarqeq.name(), "IAU Body-Fixed Frame for Tarqeq");
        assert_eq!(PyFrame::Tarqeq.abbreviation(), "IAU_TARQEQ");
    }
    #[test]
    fn test_reference_frame_iau_aegaeon() {
        assert_eq!(PyFrame::Aegaeon.name(), "IAU Body-Fixed Frame for Aegaeon");
        assert_eq!(PyFrame::Aegaeon.abbreviation(), "IAU_AEGAEON");
    }
    #[test]
    fn test_reference_frame_iau_ariel() {
        assert_eq!(PyFrame::Ariel.name(), "IAU Body-Fixed Frame for Ariel");
        assert_eq!(PyFrame::Ariel.abbreviation(), "IAU_ARIEL");
    }
    #[test]
    fn test_reference_frame_iau_umbriel() {
        assert_eq!(PyFrame::Umbriel.name(), "IAU Body-Fixed Frame for Umbriel");
        assert_eq!(PyFrame::Umbriel.abbreviation(), "IAU_UMBRIEL");
    }
    #[test]
    fn test_reference_frame_iau_titania() {
        assert_eq!(PyFrame::Titania.name(), "IAU Body-Fixed Frame for Titania");
        assert_eq!(PyFrame::Titania.abbreviation(), "IAU_TITANIA");
    }
    #[test]
    fn test_reference_frame_iau_oberon() {
        assert_eq!(PyFrame::Oberon.name(), "IAU Body-Fixed Frame for Oberon");
        assert_eq!(PyFrame::Oberon.abbreviation(), "IAU_OBERON");
    }
    #[test]
    fn test_reference_frame_iau_miranda() {
        assert_eq!(PyFrame::Miranda.name(), "IAU Body-Fixed Frame for Miranda");
        assert_eq!(PyFrame::Miranda.abbreviation(), "IAU_MIRANDA");
    }
    #[test]
    fn test_reference_frame_iau_cordelia() {
        assert_eq!(
            PyFrame::Cordelia.name(),
            "IAU Body-Fixed Frame for Cordelia"
        );
        assert_eq!(PyFrame::Cordelia.abbreviation(), "IAU_CORDELIA");
    }
    #[test]
    fn test_reference_frame_iau_ophelia() {
        assert_eq!(PyFrame::Ophelia.name(), "IAU Body-Fixed Frame for Ophelia");
        assert_eq!(PyFrame::Ophelia.abbreviation(), "IAU_OPHELIA");
    }
    #[test]
    fn test_reference_frame_iau_bianca() {
        assert_eq!(PyFrame::Bianca.name(), "IAU Body-Fixed Frame for Bianca");
        assert_eq!(PyFrame::Bianca.abbreviation(), "IAU_BIANCA");
    }
    #[test]
    fn test_reference_frame_iau_cressida() {
        assert_eq!(
            PyFrame::Cressida.name(),
            "IAU Body-Fixed Frame for Cressida"
        );
        assert_eq!(PyFrame::Cressida.abbreviation(), "IAU_CRESSIDA");
    }
    #[test]
    fn test_reference_frame_iau_desdemona() {
        assert_eq!(
            PyFrame::Desdemona.name(),
            "IAU Body-Fixed Frame for Desdemona"
        );
        assert_eq!(PyFrame::Desdemona.abbreviation(), "IAU_DESDEMONA");
    }
    #[test]
    fn test_reference_frame_iau_juliet() {
        assert_eq!(PyFrame::Juliet.name(), "IAU Body-Fixed Frame for Juliet");
        assert_eq!(PyFrame::Juliet.abbreviation(), "IAU_JULIET");
    }
    #[test]
    fn test_reference_frame_iau_portia() {
        assert_eq!(PyFrame::Portia.name(), "IAU Body-Fixed Frame for Portia");
        assert_eq!(PyFrame::Portia.abbreviation(), "IAU_PORTIA");
    }
    #[test]
    fn test_reference_frame_iau_rosalind() {
        assert_eq!(
            PyFrame::Rosalind.name(),
            "IAU Body-Fixed Frame for Rosalind"
        );
        assert_eq!(PyFrame::Rosalind.abbreviation(), "IAU_ROSALIND");
    }
    #[test]
    fn test_reference_frame_iau_belinda() {
        assert_eq!(PyFrame::Belinda.name(), "IAU Body-Fixed Frame for Belinda");
        assert_eq!(PyFrame::Belinda.abbreviation(), "IAU_BELINDA");
    }
    #[test]
    fn test_reference_frame_iau_puck() {
        assert_eq!(PyFrame::Puck.name(), "IAU Body-Fixed Frame for Puck");
        assert_eq!(PyFrame::Puck.abbreviation(), "IAU_PUCK");
    }
    #[test]
    fn test_reference_frame_iau_caliban() {
        assert_eq!(PyFrame::Caliban.name(), "IAU Body-Fixed Frame for Caliban");
        assert_eq!(PyFrame::Caliban.abbreviation(), "IAU_CALIBAN");
    }
    #[test]
    fn test_reference_frame_iau_sycorax() {
        assert_eq!(PyFrame::Sycorax.name(), "IAU Body-Fixed Frame for Sycorax");
        assert_eq!(PyFrame::Sycorax.abbreviation(), "IAU_SYCORAX");
    }
    #[test]
    fn test_reference_frame_iau_prospero() {
        assert_eq!(
            PyFrame::Prospero.name(),
            "IAU Body-Fixed Frame for Prospero"
        );
        assert_eq!(PyFrame::Prospero.abbreviation(), "IAU_PROSPERO");
    }
    #[test]
    fn test_reference_frame_iau_setebos() {
        assert_eq!(PyFrame::Setebos.name(), "IAU Body-Fixed Frame for Setebos");
        assert_eq!(PyFrame::Setebos.abbreviation(), "IAU_SETEBOS");
    }
    #[test]
    fn test_reference_frame_iau_stephano() {
        assert_eq!(
            PyFrame::Stephano.name(),
            "IAU Body-Fixed Frame for Stephano"
        );
        assert_eq!(PyFrame::Stephano.abbreviation(), "IAU_STEPHANO");
    }
    #[test]
    fn test_reference_frame_iau_trinculo() {
        assert_eq!(
            PyFrame::Trinculo.name(),
            "IAU Body-Fixed Frame for Trinculo"
        );
        assert_eq!(PyFrame::Trinculo.abbreviation(), "IAU_TRINCULO");
    }
    #[test]
    fn test_reference_frame_iau_francisco() {
        assert_eq!(
            PyFrame::Francisco.name(),
            "IAU Body-Fixed Frame for Francisco"
        );
        assert_eq!(PyFrame::Francisco.abbreviation(), "IAU_FRANCISCO");
    }
    #[test]
    fn test_reference_frame_iau_margaret() {
        assert_eq!(
            PyFrame::Margaret.name(),
            "IAU Body-Fixed Frame for Margaret"
        );
        assert_eq!(PyFrame::Margaret.abbreviation(), "IAU_MARGARET");
    }
    #[test]
    fn test_reference_frame_iau_ferdinand() {
        assert_eq!(
            PyFrame::Ferdinand.name(),
            "IAU Body-Fixed Frame for Ferdinand"
        );
        assert_eq!(PyFrame::Ferdinand.abbreviation(), "IAU_FERDINAND");
    }
    #[test]
    fn test_reference_frame_iau_perdita() {
        assert_eq!(PyFrame::Perdita.name(), "IAU Body-Fixed Frame for Perdita");
        assert_eq!(PyFrame::Perdita.abbreviation(), "IAU_PERDITA");
    }
    #[test]
    fn test_reference_frame_iau_mab() {
        assert_eq!(PyFrame::Mab.name(), "IAU Body-Fixed Frame for Mab");
        assert_eq!(PyFrame::Mab.abbreviation(), "IAU_MAB");
    }
    #[test]
    fn test_reference_frame_iau_cupid() {
        assert_eq!(PyFrame::Cupid.name(), "IAU Body-Fixed Frame for Cupid");
        assert_eq!(PyFrame::Cupid.abbreviation(), "IAU_CUPID");
    }
    #[test]
    fn test_reference_frame_iau_triton() {
        assert_eq!(PyFrame::Triton.name(), "IAU Body-Fixed Frame for Triton");
        assert_eq!(PyFrame::Triton.abbreviation(), "IAU_TRITON");
    }
    #[test]
    fn test_reference_frame_iau_nereid() {
        assert_eq!(PyFrame::Nereid.name(), "IAU Body-Fixed Frame for Nereid");
        assert_eq!(PyFrame::Nereid.abbreviation(), "IAU_NEREID");
    }
    #[test]
    fn test_reference_frame_iau_naiad() {
        assert_eq!(PyFrame::Naiad.name(), "IAU Body-Fixed Frame for Naiad");
        assert_eq!(PyFrame::Naiad.abbreviation(), "IAU_NAIAD");
    }
    #[test]
    fn test_reference_frame_iau_thalassa() {
        assert_eq!(
            PyFrame::Thalassa.name(),
            "IAU Body-Fixed Frame for Thalassa"
        );
        assert_eq!(PyFrame::Thalassa.abbreviation(), "IAU_THALASSA");
    }
    #[test]
    fn test_reference_frame_iau_despina() {
        assert_eq!(PyFrame::Despina.name(), "IAU Body-Fixed Frame for Despina");
        assert_eq!(PyFrame::Despina.abbreviation(), "IAU_DESPINA");
    }
    #[test]
    fn test_reference_frame_iau_galatea() {
        assert_eq!(PyFrame::Galatea.name(), "IAU Body-Fixed Frame for Galatea");
        assert_eq!(PyFrame::Galatea.abbreviation(), "IAU_GALATEA");
    }
    #[test]
    fn test_reference_frame_iau_larissa() {
        assert_eq!(PyFrame::Larissa.name(), "IAU Body-Fixed Frame for Larissa");
        assert_eq!(PyFrame::Larissa.abbreviation(), "IAU_LARISSA");
    }
    #[test]
    fn test_reference_frame_iau_proteus() {
        assert_eq!(PyFrame::Proteus.name(), "IAU Body-Fixed Frame for Proteus");
        assert_eq!(PyFrame::Proteus.abbreviation(), "IAU_PROTEUS");
    }
    #[test]
    fn test_reference_frame_iau_halimede() {
        assert_eq!(
            PyFrame::Halimede.name(),
            "IAU Body-Fixed Frame for Halimede"
        );
        assert_eq!(PyFrame::Halimede.abbreviation(), "IAU_HALIMEDE");
    }
    #[test]
    fn test_reference_frame_iau_psamathe() {
        assert_eq!(
            PyFrame::Psamathe.name(),
            "IAU Body-Fixed Frame for Psamathe"
        );
        assert_eq!(PyFrame::Psamathe.abbreviation(), "IAU_PSAMATHE");
    }
    #[test]
    fn test_reference_frame_iau_sao() {
        assert_eq!(PyFrame::Sao.name(), "IAU Body-Fixed Frame for Sao");
        assert_eq!(PyFrame::Sao.abbreviation(), "IAU_SAO");
    }
    #[test]
    fn test_reference_frame_iau_laomedeia() {
        assert_eq!(
            PyFrame::Laomedeia.name(),
            "IAU Body-Fixed Frame for Laomedeia"
        );
        assert_eq!(PyFrame::Laomedeia.abbreviation(), "IAU_LAOMEDEIA");
    }
    #[test]
    fn test_reference_frame_iau_neso() {
        assert_eq!(PyFrame::Neso.name(), "IAU Body-Fixed Frame for Neso");
        assert_eq!(PyFrame::Neso.abbreviation(), "IAU_NESO");
    }
    #[test]
    fn test_reference_frame_iau_charon() {
        assert_eq!(PyFrame::Charon.name(), "IAU Body-Fixed Frame for Charon");
        assert_eq!(PyFrame::Charon.abbreviation(), "IAU_CHARON");
    }
    #[test]
    fn test_reference_frame_iau_nix() {
        assert_eq!(PyFrame::Nix.name(), "IAU Body-Fixed Frame for Nix");
        assert_eq!(PyFrame::Nix.abbreviation(), "IAU_NIX");
    }
    #[test]
    fn test_reference_frame_iau_hydra() {
        assert_eq!(PyFrame::Hydra.name(), "IAU Body-Fixed Frame for Hydra");
        assert_eq!(PyFrame::Hydra.abbreviation(), "IAU_HYDRA");
    }
    #[test]
    fn test_reference_frame_iau_kerberos() {
        assert_eq!(
            PyFrame::Kerberos.name(),
            "IAU Body-Fixed Frame for Kerberos"
        );
        assert_eq!(PyFrame::Kerberos.abbreviation(), "IAU_KERBEROS");
    }
    #[test]
    fn test_reference_frame_iau_styx() {
        assert_eq!(PyFrame::Styx.name(), "IAU Body-Fixed Frame for Styx");
        assert_eq!(PyFrame::Styx.abbreviation(), "IAU_STYX");
    }
    #[test]
    fn test_reference_frame_iau_gaspra() {
        assert_eq!(PyFrame::Gaspra.name(), "IAU Body-Fixed Frame for Gaspra");
        assert_eq!(PyFrame::Gaspra.abbreviation(), "IAU_GASPRA");
    }
    #[test]
    fn test_reference_frame_iau_ida() {
        assert_eq!(PyFrame::Ida.name(), "IAU Body-Fixed Frame for Ida");
        assert_eq!(PyFrame::Ida.abbreviation(), "IAU_IDA");
    }
    #[test]
    fn test_reference_frame_iau_dactyl() {
        assert_eq!(PyFrame::Dactyl.name(), "IAU Body-Fixed Frame for Dactyl");
        assert_eq!(PyFrame::Dactyl.abbreviation(), "IAU_DACTYL");
    }
    #[test]
    fn test_reference_frame_iau_ceres() {
        assert_eq!(PyFrame::Ceres.name(), "IAU Body-Fixed Frame for Ceres");
        assert_eq!(PyFrame::Ceres.abbreviation(), "IAU_CERES");
    }
    #[test]
    fn test_reference_frame_iau_pallas() {
        assert_eq!(PyFrame::Pallas.name(), "IAU Body-Fixed Frame for Pallas");
        assert_eq!(PyFrame::Pallas.abbreviation(), "IAU_PALLAS");
    }
    #[test]
    fn test_reference_frame_iau_vesta() {
        assert_eq!(PyFrame::Vesta.name(), "IAU Body-Fixed Frame for Vesta");
        assert_eq!(PyFrame::Vesta.abbreviation(), "IAU_VESTA");
    }
    #[test]
    fn test_reference_frame_iau_psyche() {
        assert_eq!(PyFrame::Psyche.name(), "IAU Body-Fixed Frame for Psyche");
        assert_eq!(PyFrame::Psyche.abbreviation(), "IAU_PSYCHE");
    }
    #[test]
    fn test_reference_frame_iau_lutetia() {
        assert_eq!(PyFrame::Lutetia.name(), "IAU Body-Fixed Frame for Lutetia");
        assert_eq!(PyFrame::Lutetia.abbreviation(), "IAU_LUTETIA");
    }
    #[test]
    fn test_reference_frame_iau_kleopatra() {
        assert_eq!(
            PyFrame::Kleopatra.name(),
            "IAU Body-Fixed Frame for Kleopatra"
        );
        assert_eq!(PyFrame::Kleopatra.abbreviation(), "IAU_KLEOPATRA");
    }
    #[test]
    fn test_reference_frame_iau_eros() {
        assert_eq!(PyFrame::Eros.name(), "IAU Body-Fixed Frame for Eros");
        assert_eq!(PyFrame::Eros.abbreviation(), "IAU_EROS");
    }
    #[test]
    fn test_reference_frame_iau_davida() {
        assert_eq!(PyFrame::Davida.name(), "IAU Body-Fixed Frame for Davida");
        assert_eq!(PyFrame::Davida.abbreviation(), "IAU_DAVIDA");
    }
    #[test]
    fn test_reference_frame_iau_mathilde() {
        assert_eq!(
            PyFrame::Mathilde.name(),
            "IAU Body-Fixed Frame for Mathilde"
        );
        assert_eq!(PyFrame::Mathilde.abbreviation(), "IAU_MATHILDE");
    }
    #[test]
    fn test_reference_frame_iau_steins() {
        assert_eq!(PyFrame::Steins.name(), "IAU Body-Fixed Frame for Steins");
        assert_eq!(PyFrame::Steins.abbreviation(), "IAU_STEINS");
    }
    #[test]
    fn test_reference_frame_iau_braille() {
        assert_eq!(PyFrame::Braille.name(), "IAU Body-Fixed Frame for Braille");
        assert_eq!(PyFrame::Braille.abbreviation(), "IAU_BRAILLE");
    }
    #[test]
    fn test_reference_frame_iau_wilson_harrington() {
        assert_eq!(
            PyFrame::WilsonHarrington.name(),
            "IAU Body-Fixed Frame for Wilson-Harrington"
        );
        assert_eq!(
            PyFrame::WilsonHarrington.abbreviation(),
            "IAU_WILSON_HARRINGTON"
        );
    }
    #[test]
    fn test_reference_frame_iau_toutatis() {
        assert_eq!(
            PyFrame::Toutatis.name(),
            "IAU Body-Fixed Frame for Toutatis"
        );
        assert_eq!(PyFrame::Toutatis.abbreviation(), "IAU_TOUTATIS");
    }
    #[test]
    fn test_reference_frame_iau_itokawa() {
        assert_eq!(PyFrame::Itokawa.name(), "IAU Body-Fixed Frame for Itokawa");
        assert_eq!(PyFrame::Itokawa.abbreviation(), "IAU_ITOKAWA");
    }
    #[test]
    fn test_reference_frame_iau_bennu() {
        assert_eq!(PyFrame::Bennu.name(), "IAU Body-Fixed Frame for Bennu");
        assert_eq!(PyFrame::Bennu.abbreviation(), "IAU_BENNU");
    }
}
