pub fn recalculate_occultation_general<RD: Debug, LD: Debug, VF: FnOnce() -> RD, LF: FnOnce(Option<Html>, Option<Html>, &Html) -> LD, RF: FnOnce(PieceUpdateOps_PerPlayer, LD) -> RD>(
    gen: &mut UniqueGenGen<'_>,
    gplayers: &GPlayers,
    gpieces: &mut GPieces,
    goccults: &mut GOccults,
    ipieces: &IPieces,
    ioccults: &IOccults,
    to_recalculate: &mut ToRecalculate,
    piece: PieceId,
    ret_vanilla: VF,
    log_invisible: LD,
    log_callback: LF,
    ret_callback: RF
) -> Result<RD, InternalError>