use std::path::PathBuf;
use minijinja::context;
use crate::backends::jni::template_env;
use crate::codegen::generators::collect_trait_imports;
use crate::codegen::naming::to_class_name;
use crate::core::backend::{Backend, BuildConfig, BuildDependency, Capabilities, GeneratedFile};
use crate::core::config::workspace::ClientConstructorConfig;
use crate::core::config::{AdapterPattern, Language, ResolvedCrateConfig};
use crate::core::ir::{ApiSurface, ParamDef, PrimitiveType, TypeDef, TypeRef};
use crate::core::jni::{
bridge_class_name, bridge_method_name, destructor_method_name, jni_symbol, streaming_method_names,
};
include!("gen_shims/backend.rs");
include!("gen_shims/top_level.rs");
include!("gen_shims/trait_registration.rs");
include!("gen_shims/runtime_helpers.rs");
include!("gen_shims/client_shims.rs");
include!("gen_shims/marshalling.rs");
include!("gen_shims/function_shims.rs");
include!("gen_shims/method_shims.rs");
include!("gen_shims/constructor_shims.rs");
include!("gen_shims/streaming_shims.rs");
include!("gen_shims/type_helpers.rs");
include!("gen_shims/tests.rs");