# mod.ts
export class Class {
  private constructor(
    public param: PublicClass,
    private privateParam: PrivateClass,
    regularParam: PrivateClass,
  ) {
  }
}

class PublicClass {}
class PrivateClass {}

# output
file:///mod.ts: EsModuleInfo {
    module_id: ModuleId(
        0,
    ),
    specifier: "file:///mod.ts",
    re_exports: [],
    swc_id_to_symbol_id: {
        (
            "Class",
            #2,
        ): 1,
        (
            "PublicClass",
            #2,
        ): 5,
        (
            "PrivateClass",
            #2,
        ): 6,
    },
    symbols: {
        0: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 0,
            parent_id: None,
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "export class Class {\n  private constructor(\n    public param: PublicClass,\n    private privateParam: PrivateClass,\n    regularParam: PrivateClass,\n  ) {\n  }\n}\n\nclass PublicClass {}\nclass PrivateClass {}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            0,
                        ),
                        end: SourcePos(
                            202,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {
                1,
                5,
                6,
            },
            exports: {
                "Class": 1,
            },
            members: {},
        },
        1: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 1,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "export class Class {\n  private constructor(\n    public param: PublicClass,\n    private privateParam: PrivateClass,\n    regularParam: PrivateClass,\n  ) {\n  }\n}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            0,
                        ),
                        end: SourcePos(
                            158,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {
                2,
            },
            exports: {
                "%%dg_ctor%%": 2,
            },
            members: {
                3,
                4,
            },
        },
        2: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 2,
            parent_id: Some(
                1,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "private constructor(\n    public param: PublicClass,\n    private privateParam: PrivateClass,\n    regularParam: PrivateClass,\n  ) {\n  }",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            23,
                        ),
                        end: SourcePos(
                            156,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        3: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 3,
            parent_id: Some(
                1,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "public param: PublicClass",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            48,
                        ),
                        end: SourcePos(
                            73,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        4: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 4,
            parent_id: Some(
                1,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "private privateParam: PrivateClass",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            79,
                        ),
                        end: SourcePos(
                            113,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        5: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 5,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "class PublicClass {}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            160,
                        ),
                        end: SourcePos(
                            180,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
        6: Symbol {
            module_id: ModuleId(
                0,
            ),
            symbol_id: 6,
            parent_id: Some(
                0,
            ),
            decls: [
                SymbolDecl {
                    kind: Definition(
                        SymbolNode(
                            "class PrivateClass {}",
                        ),
                    ),
                    range: SourceRange {
                        start: SourcePos(
                            181,
                        ),
                        end: SourcePos(
                            202,
                        ),
                    },
                    flags: 0,
                },
            ],
            child_ids: {},
            exports: {},
            members: {},
        },
    },
}
== symbol deps (types and exprs) ==
2:23..156 [Id(("PublicClass", #2)), Id(("PrivateClass", #2)), Id(("PrivateClass", #2))]
3:48..73 [Id(("PublicClass", #2))]
4:79..113 [Id(("PrivateClass", #2))]

== symbol deps (types only) ==
2:23..156 [Id(("PublicClass", #2)), Id(("PrivateClass", #2)), Id(("PrivateClass", #2))]
3:48..73 [Id(("PublicClass", #2))]
4:79..113 [Id(("PrivateClass", #2))]

== export definitions ==
[Class]: file:///mod.ts:0..158
  export class Class {
    private constructor(
  ...
    }
  }
