fn visit_spell_target_shapes( input: &CompiledSpellTargetInput, rng: Option<&mut dyn FnMut() -> f64>, visit: impl FnMut(ResolvedTargetShape) -> Result<(), TargetShapeError>, ) -> Result<(), TargetShapeError>