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: docs.rs
    path of file: ./repos/gdext/godot-codegen/src/generator
    
    the code of the file until where you have to start completion: /*
 * Copyright (c) godot-rust; Bromeon and contributors.
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */

//! Rustdoc for various symbols.
//!
//! Single module for documentation, rather than having it in each symbol-specific file, so it's easier to keep docs consistent.

use crate::mode
    
pub fn make_virtual_trait_doc(trait_name_str: &str, class_name: &TyName) -> String {
    let TyName { rust_ty, godot_ty } = class_name;

    let online_link = format!(
        "https://docs.godotengine.org/en/stable/classes/class_{}.html#methods",
        godot_ty.to_ascii_lowercase()
    );

    let notes = special_cases::get_interface_extra_docs(trait_name_str)
        .map(|notes| format!("# Specific notes for this interface\n\n{}", notes))
        .unwrap_or_default();

    format!(
        "Virtual methods for class [`{rust_ty}`][crate::engine::{rust_ty}].\
        \n\n\
        These methods represent constructors (`init`) or callbacks invoked by the engine.\
        \n\n\
        See also [Godot docs for `{godot_ty}` methods]({online_link}).\n\n{notes}"
    )
}