def METHOD_NAME(
    self, mass: Union[None, float] = None, engine: Union[None, str] = None
) -> "Flight":
    import openap
    # The following cast secures the typing
    self = cast("Flight", self)
    actype = self.typecode
    if actype is None:
        return self
    if actype.lower() not in openap.prop.available_aircraft():
        return self
    if "fuelflow" not in self.data.columns:
        self = self.fuelflow(mass)
    if "fuelflow" not in self.data.columns:
        # fuel flow cannot be computed
        return self
    dt: tt.seconds_array = self.data.dt
    TAS: tt.speed_array = self.data.get("TAS", None)
    altitude: tt.altitude_array = self.data.altitude
    if TAS is None:
        CAS: tt.speed_array = self.data.get("CAS", None)
        if CAS is not None:
            TAS = aero.cas2tas(CAS, altitude)
    if TAS is None:
        TAS = self.data.groundspeed
    METHOD_NAME = openap.Emission(ac=actype, eng=engine, use_synonym=True)
    NOx = METHOD_NAME.nox(self.data.fuelflow, tas=TAS, alt=altitude)
    CO = METHOD_NAME.co(self.data.fuelflow, tas=TAS, alt=altitude)
    HC = METHOD_NAME.hc(self.data.fuelflow, tas=TAS, alt=altitude)
    CO2 = METHOD_NAME.co2(self.data.fuelflow)
    H2O = METHOD_NAME.h2o(self.data.fuelflow)
    SOx = METHOD_NAME.sox(self.data.fuelflow)
    return self.assign(
        **{
            "NOx": (NOx.cumsum() * dt * 1e-3),
            "CO": (CO.cumsum() * dt * 1e-3),
            "HC": (HC.cumsum() * dt * 1e-3),
            "CO2": (CO2.cumsum() * dt * 1e-3),
            "H2O": (H2O.cumsum() * dt * 1e-3),
            "SOx": (SOx.cumsum() * dt * 1e-3),
        }
    )