pub trait LanguageElementId<'db> {
// Required methods
fn module_id(&self, db: &'db dyn Database) -> ModuleId<'db>;
fn untyped_stable_ptr(
&self,
db: &'db dyn Database,
) -> SyntaxStablePtrId<'db>;
fn stable_location(&self, db: &'db dyn Database) -> StableLocation<'db>;
// Provided methods
fn parent_module(&self, db: &'db dyn Database) -> ModuleId<'db> { ... }
fn module_data(&self, db: &'db dyn Database) -> Maybe<ModuleData<'db>> { ... }
}