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: scala.rs
    path of file: ./repos/nixpacks/src/providers
    
    the code of the file until where you have to start completion: use super::Provider;
use crate::nixpacks::{
    app::App,
    environment::Environment,
    nix::pkg::Pkg,
    plan::{
        phase::{Phase, StartPhase},
        BuildPlan,
    },
};
use anyhow::Result;

pub struct ScalaProvider {}

const DEFAULT_JDK_VERSION: u32 = 17;

/**
 * Scala provider currently supports sbt.
 * - The sbt project requires sbt-native-packager, a popular packaging
 *   tool used by the community to package apps. Setting executableScriptName and
 *   enabling the JavaAppPackaging plugin are required. Please check
    
    fn test_get_jdk_pkg_name() {
        let scala = ScalaProvider {};

        // defaults to Java 17
        assert_eq!(
            "jdk17",
            scala
                .get_jdk_pkg_name(scala.get_jdk_version(&Environment::from_envs(vec![]).unwrap(),))
        );

        // Supports Java 20
        assert_eq!(
            "jdk20",
            scala.get_jdk_pkg_name(scala.get_jdk_version(
                &Environment::from_envs(vec!["NIXPACKS_JDK_VERSION=20"]).unwrap(),
            ))
        );

        // Supports Java 21
        assert_eq!(
            "jdk21",
            scala.get_jdk_pkg_name(scala.get_jdk_version(
                &Environment::from_envs(vec!["NIXPACKS_JDK_VERSION=21"]).unwrap(),
            ))
        );
    }