You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: compact_jukebox.rs
    path of file: ./repos/doukutsu-rs/src/components
    
    the code of the file until where you have to start completion: use crate::entity::GameEntity;
use crate::framework::context::Context;
use crate::framework::error::GameResult;
use crate::game::frame::Frame;
use crate::game::shared_game_state::SharedGameState;
use crate::graphics::font::Font;

#[derive(Clone, Copy)]
pub struct Compa
    
    pub fn prev_song(&mut self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
        let mut new_song_id = if self.song_id == 1 { state.constants.music_table.len() - 1 } else { self.song_id - 1 };

        // skip ika if soundtrack is not set to new
        if self.is_ika_unavailable(new_song_id, state) {
            new_song_id = 42;
        }

        self.change_song(new_song_id, state, ctx)
    }