{
  "ml": {
    "v": "7",
    "eng": "2.12.0-beta.1",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.000017831722,
        "rte": "az",
        "prob": 0.000017831722
      },
      {
        "cls": 0,
        "raw": 0.00023645163,
        "rte": "az/tar",
        "prob": 0.00023645163
      }
    ],
    "prob": 0.000017831722,
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001783172228897456,
        "type": "crate"
      },
      {
        "id": 5,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000009308258995588403,
        "type": "rust"
      },
      {
        "id": 6,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012566645636979956,
        "type": "rust"
      },
      {
        "id": 7,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010202328667219263,
        "type": "rust"
      },
      {
        "id": 8,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000009347994819108862,
        "type": "rust"
      },
      {
        "id": 9,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000011493762031022925,
        "type": "rust"
      },
      {
        "id": 10,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010401010513305664,
        "type": "rust"
      },
      {
        "id": 11,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000011652708053588867,
        "type": "registry"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-10-02T03:51:05Z"
  },
  "path": "patch-prolog-lsp-0.4.9.crate",
  "raw": {
    "files": [
      {
        "id": 0,
        "mol": "Md₂(In₄Pa)",
        "sha": "2c4a49af4dfe55a2158a7081d3f15cd98ca80ab32279ef1d974b6393e9ff6d8b",
        "path": "patch-prolog-lsp-0.4.9.crate",
        "risk": 3,
        "size": 20891,
        "type": "crate",
        "facts": {
          "metrics": {
            "file": {
              "size": 20891,
              "entropy": 7.99
            },
            "parse": {
              "error_count": 1
            },
            "binary": {
              "peak_region_bytes": 20891,
              "peak_region_entropy": 7.83
            }
          }
        },
        "ident": {
          "name": {
            "value": "patch-prolog-lsp",
            "source": "crate.name",
            "verified": false
          },
          "urls": [
            {
              "url": "https://git.navicore.tech/navicore/patch-prolog",
              "kind": "repository",
              "source": "crate.repository"
            }
          ],
          "trust": "unsigned",
          "emails": [
            "ed@onextent.com"
          ],
          "authors": [
            {
              "name": "Ed Sweeney",
              "role": "author",
              "email": "ed@onextent.com",
              "source": "crate.authors"
            }
          ],
          "version": {
            "value": "0.4.9",
            "source": "crate.version",
            "verified": false
          },
          "identifier": {
            "value": "patch-prolog-lsp",
            "source": "crate.name",
            "verified": false
          }
        },
        "traits": [
          {
            "id": "metadata/import/rust/crate/buffer/parse_best_effort::crate/buffer/parse_best_effort",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::parse_best_effort",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "from": [
              {
                "file": 4
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/package/version::cargo-package-version",
            "conf": 0.85,
            "crit": 2,
            "desc": "Cargo package has version"
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/hover::tower_lsp/lsp_types/hover",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Hover",
            "from": [
              {
                "file": 9
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/jsonrpc/result::tower_lsp/jsonrpc/result",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::jsonrpc::Result",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/range::tower_lsp/lsp_types/range",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Range",
            "from": [
              {
                "file": 7
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/predicate_indicator::crate/buffer/predicate_indicator",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::predicate_indicator",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test-attr",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[test] attribute",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/rust/super::super",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports super::*",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/package/name/convention::cargo-meaningful-description",
            "conf": 0.78,
            "crit": 2,
            "desc": "Cargo package has meaningful description"
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/markupcontent::tower_lsp/lsp_types/markupcontent",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::MarkupContent",
            "from": [
              {
                "file": 9
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/client::tower_lsp/client",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::Client",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "from": [
              {
                "file": 4
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/languageserver::tower_lsp/languageserver",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::LanguageServer",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/diagnostic::tower_lsp/lsp_types/diagnostic",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Diagnostic",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/position_to_byte_offset::crate/buffer/position_to_byte_offset",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::position_to_byte_offset",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/url::tower_lsp/lsp_types/url",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Url",
            "from": [
              {
                "file": 7
              }
            ]
          },
          {
            "id": "metadata/import/rust/std/collections/btreeset::std/collections/btreeset",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::collections::BTreeSet",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/builtins::plg_shared/builtins",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::BUILTINS",
            "from": [
              {
                "file": 7
              }
            ]
          },
          {
            "id": "metadata/import/rust/tracing/info::tracing/info",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tracing::info",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/position::tower_lsp/lsp_types/position",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Position",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/programdirectives::plg_frontend/programdirectives",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::ProgramDirectives",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "from": [
              {
                "file": 4
              }
            ]
          },
          {
            "id": "metadata/package/name/convention::cargo-repository-field",
            "conf": 0.85,
            "crit": 2,
            "desc": "Cargo package declares repository"
          },
          {
            "id": "metadata/import/rust/plg_frontend/callsite::plg_frontend/callsite",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::CallSite",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/stringinterner::plg_shared/stringinterner",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::StringInterner",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/hovercontents::tower_lsp/lsp_types/hovercontents",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::HoverContents",
            "from": [
              {
                "file": 9
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/term::plg_shared/term",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::Term",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/stdlib_pl::plg_shared/stdlib_pl",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::STDLIB_PL",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/completionitemkind::tower_lsp/lsp_types/completionitemkind",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::CompletionItemKind",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/package/name/convention::cargo-package-name",
            "conf": 0.85,
            "crit": 2,
            "desc": "Cargo package has name"
          },
          {
            "id": "metadata/import/rust/plg_frontend/lint::plg_frontend/lint",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::lint",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/sourcemap::plg_frontend/sourcemap",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::SourceMap",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/parseerror::plg_frontend/parseerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::ParseError",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test",
            "conf": 0.95,
            "crit": 3,
            "desc": "Rust test marker or harness",
            "from": [
              {
                "off": 7917,
                "file": 5,
                "line": 219
              },
              {
                "off": 5508,
                "file": 6,
                "line": 155
              },
              {
                "off": 4285,
                "file": 7,
                "line": 113
              },
              {
                "off": 4582,
                "file": 8,
                "line": 114
              },
              {
                "off": 3114,
                "file": 9,
                "line": 89
              }
            ],
            "uses": [
              9,
              41
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/builtins/atom_names::plg_shared/builtins/atom_names",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::builtins::atom_names",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/import/rust/tracing/warn::tracing/warn",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tracing::warn",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/gotodefinitionresponse::tower_lsp/lsp_types/gotodefinitionresponse",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::GotoDefinitionResponse",
            "from": [
              {
                "file": 7
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/clause::plg_shared/clause",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::Clause",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-cfg-test",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[cfg(test)] attribute",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/rust/std/sync/rwlock::std/sync/rwlock",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::sync::RwLock",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lspservice::tower_lsp/lspservice",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::LspService",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/package/name/convention::cargo-readme-field",
            "conf": 0.85,
            "crit": 2,
            "desc": "Cargo package declares readme"
          },
          {
            "id": "metadata/import/rust/plg_frontend/stdlib_predicates::plg_frontend/stdlib_predicates",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::stdlib_predicates",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/import/rust/std/collections/btreemap::std/collections/btreemap",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::collections::BTreeMap",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/markupkind::tower_lsp/lsp_types/markupkind",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::MarkupKind",
            "from": [
              {
                "file": 9
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/server::tower_lsp/server",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::Server",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/package/name/convention::cargo-license-field",
            "conf": 0.85,
            "crit": 2,
            "desc": "Cargo package declares license"
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "micro-behaviors/os/event/loop::tokio-namespace",
            "conf": 0.5,
            "crit": 3,
            "desc": "References the Tokio async runtime namespace",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/completionitem::tower_lsp/lsp_types/completionitem",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::CompletionItem",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/word_at_position::crate/buffer/word_at_position",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::word_at_position",
            "from": [
              {
                "file": 7
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/diagnosticseverity::tower_lsp/lsp_types/diagnosticseverity",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::DiagnosticSeverity",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/span::plg_shared/span",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::Span",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/location::tower_lsp/lsp_types/location",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Location",
            "from": [
              {
                "file": 7
              }
            ]
          },
          {
            "id": "metadata/import/rust/std/collections/hashmap::std/collections/hashmap",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::collections::HashMap",
            "from": [
              {
                "file": 10
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/builtins/functor_names::plg_shared/builtins/functor_names",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::builtins::functor_names",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/parser::plg_frontend/parser",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::Parser",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types::tower_lsp/lsp_types",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::*",
            "from": [
              {
                "file": 10
              }
            ]
          }
        ]
      },
      {
        "ctx": [
          {
            "b": "aS%9]w[CQ{eQ7StyIvW0aztt5AaK6haAIj8A+e=7vTf87v@Dj6y?mZ5z/e@9vqYP#u$:F4wPzfh3nj4Q3nj4Qat1Zfq=25+z/YSmx(v(i\u0026!AWuvTi6bePklkB7GCov@DmdwPz\u003caz/cXtxKM09A+frhwN/?6aARpdaxqxgeIPdav@C)?eP\u003e@BBp6VOaS})Iv@DmdwO#Q7z/dfmfe1E\u003eeG^O}B-IhqBzkkcb6NZiA+cw7x\u003eeudxK@r5vrlJkv@Dj6y?mZ1ay/j@B-RapwO#3ya%p@B",
            "ln": 2,
            "col": 3,
            "line": 1
          },
          {
            "b": "Bz(gxB-Rb8ayYQsvScv4ay/tcB9hthA=S\u0026u3uZA3aAhdfuUjs%zGGDcwi8+#p*[x=wPxsAp\u0026ZF!A:-/Mx(W={Bzk]fBa3aSB-RapAboe]B7/05wN)?.DQzQTB-RaBax9x5x(mMPzGGDgzE)\u0026taxh])zgaFMB-RapBz(wmA:JT7A5{3@B8UGdD2NtoiYZ8QB7]-gz/dSz3nj4=awDo-ayPdgoJa+gu)]\u00269zE\u003evwv}Yp\u003evpKy\u003cAW+xsp\u0026yz?BzkVhaARJAvix38By=Okw[D9}BrC^wBzbxaayFX$zGGDcBylZdfe1%=fe1$3oJa+gAbL",
            "ln": 372,
            "col": 50,
            "line": 7
          },
          {
            "b": "zGGr3zFs03az(mqBzkifBy=O8xKL}5ayX[]z/PziBzbj)fe1$3v%8*kz/NDMra]#!aA}mgyJyRdxKL}5efFwhv%8Thy*?B1zF781y?mG\u003eB-.jIhyH1ZaAg[jay/7[AX5twzE:(hBz(bt3nj4=aA}HgzxJ$hvpJ$+zF781AbP/iBzkVhe[nN6A:-E1",
            "ln": 734,
            "col": 42,
            "line": 16
          },
          {
            "b": "x)KtL3lQDlaz+Rhaz(myay/tcB9hthwm6F3w?=h8aA.:tDsXiZatt\u003e:arR^Hw]zYjc#SZfB7GCAay/7lazCZoy?W=#e[nN6A:JJ#wnbK+B0@EWDKp(rarR^HarUxgay/tcB9hthwm6F3w?=g^k0p3gvrc0(BrC]qarR^HarR^HarR^HA+funA=90",
            "ln": 1455,
            "col": 42,
            "line": 30
          },
          {
            "b": "y?mYhzfo}yv}Z15yHqd8vrcDjjS(Bu3lQDlaz+Rhaz(myazz@Yatt\u003e:arR^HCw7YbwGUXfjrO9UBy/ICy?mGjdiJ%AarR^HarR^Hfe1B@k}9{zy*?EcwGV8aA=2JdvruBdayD*bB6{beAV!:xjvJ4nk42#IarR^HarR^Hx\u003ewF%D30Rstwmv=jV%]%cOt",
            "ln": 4555,
            "col": 5,
            "line": 113
          },
          {
            "b": "azC[7By/Gfx(mv3z/M%-az\u003eLev}YB{aT^WuarR^HarR^HarR^HarR!oD30Rse[X:qc$%!OatCq@3lQDlarR^HarR^HarR^HawM\u0026)wGVvyq/uI:c$jLDcN*f=ax9h}wHI1ntY.txaBCqgz/65lvKCA3cN*f=ax9h}wHI1ntY7]r3lQDlarR^HarR^Hao",
            "ln": 4724,
            "col": 16,
            "line": 118
          },
          {
            "b": "Bz\u003eJcBAh8kxdbhWayPq6B1Rouzyu}.dgdguarR^HarV7tarR^HarR^HuM.G}awM\u0026)wH[fharR!P3vJl*bu[U\u0026xdd\u003ekB95\u003cp3t\u003cY(aARgoBAnNK3lQDlaA.:paAIWAwPx*)dMW$AarR^Hw]n-gz/Wsyx(mGyaAYE}efFCvy=SXYgCQy4eJ$pNz/YSmx(v(iDKp(rarR^HarTH0B7]-gz/cXA3lQDlarR^HarR^Haz++fwH[fharR^HarR^HarR!pxKL{\u0026v@#p5iV}{Jy+b]oarR^HarR!P3lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-gz/YSmx(v(@Bz\u003eI}D30R8z!rQ5wPRo?y*?g1B6\u0026({B97=9x(mG?wO#3bdiJ%AarR^HarR^Hy?mYhz!rP7jS[YZB7]-gz/e{7z^M$0By!/$w[D9}BsntDwO=g3tYa+7A+]ngefF[IB0@Z[auqChdlv\u003eVarR^HarR!nB8$]kByeQ0aT?nvw?k66z/65lh7o$o3lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-gz/YSmx(v(@Bz\u003eI}D30R8z!rQ5wPRo)vqYQ(wPIi\u0026zeTf6uVQvgA=kP0By!/#vqf:gdf",
            "ln": 7681,
            "col": 46,
            "line": 202
          },
          {
            "b": "arR^HarR^Hy?mYhzEEx[B2\u003eBAwN^\u0026fj%i0hv@bN@B7Gz1arR^HarR^HarR^He[]AsAWSvzarR^HarR^HarR^He[O*lBy/G1zddxiD$dKDAb]J2x\u003e7N[wNxd?wnbKZBz(gFcsXVwwNPa2asp/uBy/GgwPxjG3lQDlarR^HarR^HatdItA438Zzy=]qdsrmQdgdguarR^HarR^HarSpDz!%l3v@%aFi%)8MarR^HarU9lB7GxlaT?kpzdN=vx(){bc[c=SzH0TTzHrNAau.\u003egb5!.Pdlv\u003eVarR!P3jm)#arSr\u003caw#=-A+frkx(v(iw]zYjBzbkdze0JjvS=o{wPw]6z/6DfwPRT8zxJzhxf4ezzu",
            "ln": 9235,
            "col": 1,
            "line": 252
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "nth_line_byte_offset"
            ],
            [
              "",
              "content.len"
            ],
            [
              "",
              "line.char_indices"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "ch.len_utf16"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "content.bytes.enumerate"
            ],
            [
              "",
              "content.bytes"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "plg_shared::StringInterner::new"
            ],
            [
              "",
              "plg_frontend::Parser::parse_program_with_directives"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "plg_shared::StringInterner::new"
            ],
            [
              "",
              "Vec::new"
            ],
            [
              "",
              "plg_frontend::ProgramDirectives::default"
            ],
            [
              "",
              "clause_chunks"
            ],
            [
              "",
              "plg_frontend::Parser::parse_program_with_directives"
            ],
            [
              "",
              "all_clauses.extend"
            ],
            [
              "",
              "all_directives.dynamic.extend"
            ],
            [
              "",
              "all_clauses.is_empty"
            ],
            [
              "",
              "all_directives.dynamic.is_empty"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "content.as_bytes"
            ],
            [
              "",
              "Vec::new"
            ],
            [
              "",
              "bytes.len"
            ],
            [
              "",
              "chunks.push"
            ],
            [
              "",
              "bytes.get"
            ],
            [
              "",
              "next.is_ascii_lowercase"
            ],
            [
              "",
              "chunks.push"
            ],
            [
              "",
              "position_to_byte_offset"
            ],
            [
              "",
              "content.len"
            ],
            [
              "",
              "c.is_alphanumeric"
            ],
            [
              "",
              "prefix.char_indices.rev.take_while.last.map.unwrap_or"
            ],
            [
              "",
              "prefix.char_indices.rev.take_while.last.map"
            ],
            [
              "",
              "prefix.char_indices.rev.take_while.last"
            ],
            [
              "",
              "prefix.char_indices.rev.take_while"
            ],
            [
              "",
              "prefix.char_indices.rev"
            ],
            [
              "",
              "prefix.char_indices"
            ],
            [
              "",
              "is_id"
            ],
            [
              "",
              "suffix.char_indices.take_while.last.map.unwrap_or"
            ],
            [
              "",
              "suffix.char_indices.take_while.last.map"
            ],
            [
              "",
              "suffix.char_indices.take_while.last"
            ],
            [
              "",
              "suffix.char_indices.take_while"
            ],
            [
              "",
              "suffix.char_indices"
            ],
            [
              "",
              "is_id"
            ],
            [
              "",
              "c.len_utf8"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "interner.resolve.to_string"
            ],
            [
              "",
              "interner.resolve"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "interner.resolve.to_string"
            ],
            [
              "",
              "interner.resolve"
            ],
            [
              "",
              "args.len"
            ],
            [
              "",
              "position_to_byte_offset"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "position_to_byte_offset.unwrap"
            ],
            [
              "",
              "position_to_byte_offset"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "position_to_byte_offset.unwrap"
            ],
            [
              "",
              "position_to_byte_offset"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "parse_best_effort.expect"
            ],
            [
              "",
              "parse_best_effort"
            ],
            [
              "",
              "clauses.iter.filter_map.map.collect"
            ],
            [
              "",
              "clauses.iter.filter_map.map"
            ],
            [
              "",
              "clauses.iter.filter_map"
            ],
            [
              "",
              "clauses.iter"
            ],
            [
              "",
              "predicate_indicator"
            ],
            [
              "",
              "parse_best_effort.expect"
            ],
            [
              "",
              "parse_best_effort"
            ],
            [
              "",
              "clauses.iter.filter_map.map.collect"
            ],
            [
              "",
              "clauses.iter.filter_map.map"
            ],
            [
              "",
              "clauses.iter.filter_map"
            ],
            [
              "",
              "clauses.iter"
            ],
            [
              "",
              "predicate_indicator"
            ],
            [
              "",
              "parse_best_effort.expect"
            ],
            [
              "",
              "parse_best_effort"
            ],
            [
              "",
              "clauses.iter.filter_map.map.collect"
            ],
            [
              "",
              "clauses.iter.filter_map.map"
            ],
            [
              "",
              "clauses.iter.filter_map"
            ],
            [
              "",
              "clauses.iter"
            ],
            [
              "",
              "predicate_indicator"
            ],
            [
              "",
              "plg_frontend::Parser"
            ],
            [
              "",
              "plg_frontend::ProgramDirectives"
            ],
            [
              "",
              "plg_shared::Clause"
            ],
            [
              "",
              "plg_shared::StringInterner"
            ],
            [
              "",
              "plg_shared::Term"
            ],
            [
              "",
              "tower_lsp::lsp_types::Position"
            ],
            [
              "",
              "super::*"
            ]
          ],
          "mbr": [
            "all_clauses.extend",
            "all_clauses.is_empty",
            "all_directives.dynamic",
            "all_directives.dynamic.extend",
            "all_directives.dynamic.is_empty",
            "args.len",
            "bytes.get",
            "bytes.len",
            "c.head",
            "c.is_alphanumeric",
            "c.len_utf8",
            "ch.len_utf16",
            "chunks.push",
            "clauses.iter",
            "clauses.iter.filter_map",
            "clauses.iter.filter_map.map",
            "clauses.iter.filter_map.map.collect",
            "content.as_bytes",
            "content.bytes",
            "content.bytes.enumerate",
            "content.len",
            "d.dynamic",
            "interner.resolve",
            "interner.resolve.to_string",
            "line.char_indices",
            "next.is_ascii_lowercase",
            "parse_best_effort.expect",
            "position.character",
            "position.line",
            "position_to_byte_offset.unwrap",
            "prefix.char_indices",
            "prefix.char_indices.rev",
            "prefix.char_indices.rev.take_while",
            "prefix.char_indices.rev.take_while.last",
            "prefix.char_indices.rev.take_while.last.map",
            "prefix.char_indices.rev.take_while.last.map.unwrap_or",
            "suffix.char_indices",
            "suffix.char_indices.take_while",
            "suffix.char_indices.take_while.last",
            "suffix.char_indices.take_while.last.map",
            "suffix.char_indices.take_while.last.map.unwrap_or"
          ],
          "tgt": [
            "Some",
            "Vec::new",
            "all_clauses.extend",
            "all_clauses.is_empty",
            "all_directives.dynamic.extend",
            "all_directives.dynamic.is_empty",
            "args.len",
            "bytes.get",
            "bytes.len",
            "c.is_alphanumeric",
            "c.len_utf8",
            "ch.len_utf16",
            "chunks.push",
            "clause_chunks",
            "clauses.iter",
            "clauses.iter.filter_map",
            "clauses.iter.filter_map.map",
            "clauses.iter.filter_map.map.collect",
            "content.as_bytes",
            "content.bytes",
            "content.bytes.enumerate",
            "content.len",
            "interner.resolve",
            "interner.resolve.to_string",
            "is_id",
            "line.char_indices",
            "next.is_ascii_lowercase",
            "nth_line_byte_offset",
            "parse_best_effort",
            "parse_best_effort.expect",
            "plg_frontend::Parser::parse_program_with_directives",
            "plg_frontend::ProgramDirectives::default",
            "plg_shared::StringInterner::new",
            "pos",
            "position_to_byte_offset",
            "position_to_byte_offset.unwrap",
            "predicate_indicator",
            "prefix.char_indices",
            "prefix.char_indices.rev",
            "prefix.char_indices.rev.take_while",
            "prefix.char_indices.rev.take_while.last",
            "prefix.char_indices.rev.take_while.last.map",
            "prefix.char_indices.rev.take_while.last.map.unwrap_or",
            "suffix.char_indices",
            "suffix.char_indices.take_while",
            "suffix.char_indices.take_while.last",
            "suffix.char_indices.take_while.last.map",
            "suffix.char_indices.take_while.last.map.unwrap_or"
          ],
          "funcs": [
            [
              "position_to_byte_offset",
              1075
            ],
            [
              "nth_line_byte_offset",
              1840
            ],
            [
              "parse_best_effort",
              2979
            ],
            [
              "clause_chunks",
              4424
            ],
            [
              "word_at_position",
              6112
            ],
            [
              "predicate_indicator",
              7405
            ],
            [
              "pos",
              7793
            ],
            [
              "position_to_byte_offset_clamps_past_line_end",
              7933
            ],
            [
              "position_to_byte_offset_handles_emoji_surrogate_pair",
              8113
            ],
            [
              "position_to_byte_offset_handles_multibyte_ascii_mix",
              8450
            ],
            [
              "position_to_byte_offset_returns_none_for_line_past_end",
              8820
            ],
            [
              "parse_best_effort_recovers_after_unfinished_trailing_clause",
              8979
            ],
            [
              "parse_best_effort_recovers_above_and_below_a_broken_middle_clause",
              9752
            ],
            [
              "parse_best_effort_handles_multiple_broken_clauses",
              10625
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 9,
              "op.ge": 1,
              "op.gt": 2,
              "op.lt": 1,
              "op.add": 14,
              "op.lor": 3,
              "op.sub": 1,
              "op.land": 1,
              "max_depth": 21,
              "call_count": 94,
              "node_count": 2746,
              "member_count": 41,
              "op_density.eq": 0,
              "op_density.ge": 0,
              "op_density.gt": 0,
              "op_density.lt": 0,
              "op_density.add": 0.01,
              "op_density.lor": 0,
              "op_density.sub": 0,
              "op_density.land": 0,
              "max_concat_chain": 3,
              "member_depth_max": 7
            },
            "file": {
              "size": 11292,
              "entropy": 4.72
            },
            "text": {
              "lines": 304,
              "top_char": 101,
              "max_ws_run": 4,
              "digit_ratio": 0.01,
              "space_count": 2647,
              "char_entropy": 4.72,
              "unique_chars": 96,
              "top_char_null": 0,
              "string_density": 0.08,
              "top_char_ratio": 0.08,
              "avg_line_length": 36.14,
              "max_line_length": 95,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.09,
              "last_line_length": 1,
              "whitespace_ratio": 0.26,
              "identifier_density": 1.58,
              "line_length_stddev": 26.96,
              "normalized_string_count": 1.32,
              "repeated_char_sequences": 51,
              "suspicious_string_ratio": 0.09,
              "suspicious_comment_ratio": 0.08,
              "suspicious_identifier_ratio": 0.04,
              "normalized_unique_identifiers": 13.82
            },
            "binds": {
              "count": 40
            },
            "binary": {
              "peak_region_bytes": 11264,
              "peak_region_entropy": 4.83
            },
            "source": {
              "function_count": 14
            },
            "imports": {
              "count": 7,
              "wildcard": 1,
              "third_party_count": 7,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 315,
              "count": 23,
              "shell": 2,
              "avg_length": 13.7,
              "max_length": 52,
              "avg_entropy": 2.55,
              "entropy_stddev": 1.34
            },
            "comments": {
              "chars": 3507,
              "count": 63,
              "lines": 63,
              "high_entropy": 5,
              "to_code_ratio": 0.26
            },
            "functions": {
              "count": 14,
              "density": 4.61,
              "avg_params": 0.86,
              "code_ratio": 0.72,
              "max_params": 2,
              "length_stddev": 11.62,
              "avg_name_length": 34.64,
              "no_params_count": 7,
              "avg_length_lines": 15.64,
              "max_length_lines": 41,
              "min_length_lines": 3,
              "high_entropy_names": 7,
              "single_char_params": 1,
              "avg_param_name_length": 5.92
            },
            "identifiers": {
              "count": 479,
              "unique": 114,
              "avg_length": 10.34,
              "max_length": 65,
              "min_length": 1,
              "avg_entropy": 2.43,
              "reuse_ratio": 0.24,
              "length_stddev": 12.2,
              "has_digit_ratio": 0.04,
              "sequential_names": 5,
              "single_char_count": 6,
              "single_char_ratio": 0.05,
              "high_entropy_count": 11,
              "high_entropy_ratio": 0.1,
              "all_lowercase_ratio": 0.83,
              "all_uppercase_ratio": 0.01,
              "numeric_suffix_count": 4,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 5,
        "mol": "Md(Pa)",
        "path": "patch-prolog-lsp-0.4.9.crate!!patch-prolog-lsp-0.4.9/src/buffer.rs",
        "pid": 0,
        "risk": 2,
        "sha": "8e588350a6948667e6b605322e431d9868dadb9ac7f349e1a39d5deec8350184",
        "size": 11292,
        "traits": [
          {
            "id": "metadata/import/rust/plg_frontend/parser::plg_frontend/parser",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::Parser",
            "spans": [
              [
                420,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/programdirectives::plg_frontend/programdirectives",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::ProgramDirectives",
            "spans": [
              [
                428,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/clause::plg_shared/clause",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::Clause",
            "spans": [
              [
                465,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/stringinterner::plg_shared/stringinterner",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::StringInterner",
            "spans": [
              [
                473,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/term::plg_shared/term",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::Term",
            "spans": [
              [
                489,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/position::tower_lsp/lsp_types/position",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Position",
            "spans": [
              [
                500,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/super::super",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports super::*",
            "spans": [
              [
                7778,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                127,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                50,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "spans": [
              [
                113,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                1503,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                782,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-cfg-test",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[cfg(test)] attribute",
            "spans": [
              [
                7745,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test-attr",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[test] attribute",
            "spans": [
              [
                7917,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test",
            "conf": 0.95,
            "crit": 3,
            "desc": "Rust test marker or harness",
            "uses": [
              12,
              13
            ],
            "spans": [
              [
                7745,
                12
              ],
              [
                7917,
                11
              ]
            ]
          }
        ],
        "type": "rust"
      },
      {
        "ctx": [
          {
            "b": "eOP8BAb]J2x\u003e7N[wPF$xw].*bayGe8xj2Z[vrb{\u0026iYZ.)x(4)9zGxhd\u0026^^moBzbkdB7/05wN(c3fcICXarU\u0026Cv{@??y*?vfaAR43y?kWJz/fxpayFX$ze:r5BywS{wHG0naz$R8wPF#5A+cwiw[CQ{wN)tmB8IysfcICXarUPwwPzj3z/P[wvqYP#u)e]2zE[05AV!!fAaJD#ayPslv@Dj6y?mZ5z/fRBe^:l+aS@J)ax9w)y?Wu3Ab]J2x\u003e7N[wPF#aA=k!qBzbkdB7/05wN(]\u003eAboe]w].*cBy/u2iY.t7wnC@",
            "ln": 75,
            "col": 13,
            "line": 4
          },
          {
            "b": "xKL{\u0026v@#p5A%:MNaS@gwy\u0026B5@zGP/cA+P2ad\u003ce$LwmY!5v@Dy0dj$@mB-RapB97}Ni+98Ay?m9#x(v)giYYPbA+e/XwPQ0v3uZA3aAhdfuUjs%zGGDcwi8+)ByYi4vQB7{wN]H+vru74i%{aKwGU@dxj2Z[vrb{\u0026iYZ.)x(4)9zGv\u003c1DTR2mzc}f?zdN=tazb+lv@#TfuV6p?wPJnY3uZA3aARKCwPzc]B8Tf3y\u0026:M5BA}?pB2(velVl*Xy?mZ5z/ec*wO\u0026$vlVl*Xy?mZ5z/ec*wO\u003e7OzE+pvp\u0026yz?BzkVhEld=yB-Rapv@=11wJz\u003eYB.kk%AYMmdAa9^dwNw[TB97=2w[C$4BsXLNz/YSmx(v(@Bz\u003eI}D30R8z!rQ5wPPECAb]J2x\u003e7N[wNxd?wnbKZBz(hFi%(slBZ=F9zxJCcze:StwHI5bzGGDcBugJ\u003eB98BNaAhmux([6czAn[pz/YSmx(v(rat2=1r+k=6lVl*Xy?mZ5z/ec*wO\u003cQNDKp(rarUGiBrCKywObU3auZ\u0026SB-IIlzGGlfz/Pw}Ab]J4x)q4oz/fVdzGEALAbP/iBzkVhdlv\u003ezarR^Hfe0",
            "ln": 597,
            "col": 60,
            "line": 12
          },
          {
            "b": "B7]@idlX\u003eq3lQDlarR^HaA.:pA:J^awN]H+vru74e[]AsAWSv?v@c73wN)hre[n*oy?m9#c[dj+arR^Hy?mYhB97@ex\u003c@hFaAITny?Wu=Ab]J2x\u003e7N[wPGmGi%)8MarUGiBrCTDwnC%?uU:j#B2\u003eB+ByWA[v@Dg1wN/*@z/fRSi.iX2xJ5F:jsBcIA+PA7",
            "ln": 1443,
            "col": 56,
            "line": 31
          },
          {
            "b": "x\u003c@i6AV/HCwPw]jA+e=}v{%E\u003caA7\u003cmBzbkdB75]%asIbozdLmvfEXQYarR^Hw]zYjzEEx[azCZovruB8uV6p?wPGmGaBsCrarR^HarR!vw/@mmvqPNdB97\u0026hBAp/kx([2pcua0pw[=GsaBsCrarR^HarR^HarR!pz/fVhzGPIL3lQDlarR^HaBKN",
            "ln": 1789,
            "col": 14,
            "line": 39
          },
          {
            "b": "vJYSgwN]H+vru74aMv{oaAIsjA3e\u003ebaARpdaA.:pAV/47B0bHmwmYv!zE)u3BzbxfayDQnvqPNbayPq8BA]rye^-ZzarUomAV==FvqPNbayPq8BA]qTx(k5mByYi4vJZ18arR^HarR^Hx\u003ewFhzEEx[e]#byA==wfCwhejc)\u0026[NwObU3diJ%AarR^H",
            "ln": 2877,
            "col": 16,
            "line": 73
          },
          {
            "b": "A:-]]z/NmnwOb\u003e3wId!gzyu}.i%)8MarUc8w]zZ3tx1Q]w[=G%B97\u0026hBs]gKe{82sB98CpzF7vD3vJl*bu[U\u0026xdd\u003ekB95\u003cp3t\u003cY(aARgoBAnNK3lQDlaA.:paAIWAwPx*)dMW$AarR^Hw]n-gz/Wsyx(mGyaAYE}efFCvy=SXYgCQy4eJ$pNz/YSmx(v(iDKp(rarR^HarTH0B7]-gz/cXA3lQDlarR^HarR^Haz++fwH[fharR^HarR^HarR!pxKL{\u0026v@#p5iV}{Jy+b]oarR^HarR!P3lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-gA+e\u0026%CWB)3uUaa=uVfK-Cw?Ijc[co=3lQDlarR^HayPtjwPz)1wPn\u003ewv%8*jwO#P%Cw?IjuVp3%w[=Grb4++itYay\u0026z6yINAbP!Cf!sC6djD!\u003cb5H[da$kOXarR^HEf{r7arR^KtxBB$Bx]j@arR!szxJ[swObU3uTX4-B97\u0026hBye}",
            "ln": 5272,
            "col": 13,
            "line": 140
          },
          {
            "b": "arR^WfcBe7xl4N8B7]MgazbLjaARpdaxqxgeIPdaAa9S#v(+-vayYF9w[u09CwhejayMygz/dc)q:TbFay/7[AV!?5w]zZ33lQDlatkw\u003cBzbkdv%8*kz/M$qB-RTEzF%RtB8kM2wGU\u00267wg.qfwmYZ#x(n2B3lQDlar$9jwPI%03lQDlazbHlAb]J4",
            "ln": 6076,
            "col": 2,
            "line": 173
          },
          {
            "b": "By/uiauZ?\u003eb{pa8tYay\u0026z6z4GarR^HarR^Hy?mYhA+frmy\u0026*^.ay/LmA+fcguW3Bewm6p@wObU3c$vgkBy/uiefF[IB0@:]atUC}i%)8MarR^HarU9lB7GxluUaj2c#@)u",
            "ln": 6349,
            "col": 16,
            "line": 178
          },
          {
            "b": "AWSv?zddxiD$^%Jx!BjgvR6vdvrk^%BAe=Udk2aGy\u00260V)BsnO13lQDlarR^HayPtjwPz(oc#JEgwPGFlz/fV9x(m#ucl^qrzdm6%a$k5=b58dgzf4-XDV0newPG)%EiHa43lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-3z/6DfwPRT8zEm0\u0026zE^/}vS=y3",
            "ln": 6680,
            "col": 38,
            "line": 187
          },
          {
            "b": "zxK4mwGUD8w[CQ{iV@M^wPw]qx(m#yaAITny?Wu3v@DsiazkRgwIarjarR^KtxBB$Bx]j@arR!szxJCcze:r5BzkVhuV*B3A:J^awN]H+vru6/B7!#)z*cnfB97@ex\u003c@FtaBs",
            "ln": 8288,
            "col": 39,
            "line": 226
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "current_word_prefix"
            ],
            [
              "",
              "user_predicates"
            ],
            [
              "",
              "user_predicates.iter.cloned.collect"
            ],
            [
              "",
              "user_predicates.iter.cloned"
            ],
            [
              "",
              "user_predicates.iter"
            ],
            [
              "",
              "plg_frontend::stdlib_predicates"
            ],
            [
              "",
              "stdlib.iter.cloned.collect"
            ],
            [
              "",
              "stdlib.iter.cloned"
            ],
            [
              "",
              "stdlib.iter"
            ],
            [
              "",
              "Vec::new"
            ],
            [
              "",
              "plg_shared::builtins::atom_names"
            ],
            [
              "",
              "name.starts_with"
            ],
            [
              "",
              "name.to_string"
            ],
            [
              "",
              "user_keys.contains"
            ],
            [
              "",
              "stdlib_keys.contains"
            ],
            [
              "",
              "items.push"
            ],
            [
              "",
              "name.to_string"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Default::default"
            ],
            [
              "",
              "plg_shared::builtins::functor_names"
            ],
            [
              "",
              "name.starts_with"
            ],
            [
              "",
              "name.to_string"
            ],
            [
              "",
              "user_keys.contains"
            ],
            [
              "",
              "stdlib_keys.contains"
            ],
            [
              "",
              "items.push"
            ],
            [
              "",
              "name.to_string"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Default::default"
            ],
            [
              "",
              "name.starts_with"
            ],
            [
              "",
              "user_keys.contains"
            ],
            [
              "",
              "name.clone"
            ],
            [
              "",
              "items.push"
            ],
            [
              "",
              "name.clone"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Default::default"
            ],
            [
              "",
              "name.starts_with"
            ],
            [
              "",
              "items.push"
            ],
            [
              "",
              "name.clone"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Default::default"
            ],
            [
              "",
              "crate::buffer::parse_best_effort"
            ],
            [
              "",
              "Vec::new"
            ],
            [
              "",
              "std::collections::BTreeSet::new"
            ],
            [
              "",
              "crate::buffer::predicate_indicator"
            ],
            [
              "",
              "seen.insert"
            ],
            [
              "",
              "seen.into_iter.collect"
            ],
            [
              "",
              "seen.into_iter"
            ],
            [
              "",
              "crate::buffer::position_to_byte_offset"
            ],
            [
              "",
              "String::new"
            ],
            [
              "",
              "before.char_indices.rev.take_while.last.map.unwrap_or"
            ],
            [
              "",
              "before.char_indices.rev.take_while.last.map"
            ],
            [
              "",
              "before.char_indices.rev.take_while.last"
            ],
            [
              "",
              "before.char_indices.rev.take_while"
            ],
            [
              "",
              "before.char_indices.rev"
            ],
            [
              "",
              "before.char_indices"
            ],
            [
              "",
              "c.is_alphanumeric"
            ],
            [
              "",
              "before.len"
            ],
            [
              "",
              "current_word_prefix"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "items.iter.map.collect"
            ],
            [
              "",
              "items.iter.map"
            ],
            [
              "",
              "items.iter"
            ],
            [
              "",
              "i.label.as_str"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "items.iter.map.collect"
            ],
            [
              "",
              "items.iter.map"
            ],
            [
              "",
              "items.iter"
            ],
            [
              "",
              "i.label.as_str"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "items.iter.map.collect"
            ],
            [
              "",
              "items.iter.map"
            ],
            [
              "",
              "items.iter"
            ],
            [
              "",
              "i.label.as_str"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "all.iter.map.collect"
            ],
            [
              "",
              "all.iter.map"
            ],
            [
              "",
              "all.iter"
            ],
            [
              "",
              "i.label.as_str"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "items.iter.filter.collect"
            ],
            [
              "",
              "items.iter.filter"
            ],
            [
              "",
              "items.iter"
            ],
            [
              "",
              "i.detail.as_deref"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "items.iter.find"
            ],
            [
              "",
              "items.iter"
            ],
            [
              "",
              "i.detail.as_deref"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "std::collections::BTreeSet"
            ],
            [
              "",
              "plg_frontend::stdlib_predicates"
            ],
            [
              "",
              "plg_shared::builtins::atom_names"
            ],
            [
              "",
              "plg_shared::builtins::functor_names"
            ],
            [
              "",
              "tower_lsp::lsp_types::CompletionItem"
            ],
            [
              "",
              "tower_lsp::lsp_types::CompletionItemKind"
            ],
            [
              "",
              "tower_lsp::lsp_types::Position"
            ],
            [
              "",
              "crate::buffer::parse_best_effort"
            ],
            [
              "",
              "crate::buffer::position_to_byte_offset"
            ],
            [
              "",
              "crate::buffer::predicate_indicator"
            ],
            [
              "",
              "super::*"
            ]
          ],
          "mbr": [
            "all.iter",
            "all.iter.map",
            "all.iter.map.collect",
            "before.char_indices",
            "before.char_indices.rev",
            "before.char_indices.rev.take_while",
            "before.char_indices.rev.take_while.last",
            "before.char_indices.rev.take_while.last.map",
            "before.char_indices.rev.take_while.last.map.unwrap_or",
            "before.len",
            "c.is_alphanumeric",
            "clause.head",
            "i.detail",
            "i.detail.as_deref",
            "i.label",
            "i.label.as_str",
            "items.iter",
            "items.iter.filter",
            "items.iter.filter.collect",
            "items.iter.find",
            "items.iter.map",
            "items.iter.map.collect",
            "items.push",
            "name.clone",
            "name.starts_with",
            "name.to_string",
            "seen.insert",
            "seen.into_iter",
            "seen.into_iter.collect",
            "stdlib.iter",
            "stdlib.iter.cloned",
            "stdlib.iter.cloned.collect",
            "stdlib_keys.contains",
            "user_keys.contains",
            "user_predicates.iter",
            "user_predicates.iter.cloned",
            "user_predicates.iter.cloned.collect"
          ],
          "tgt": [
            "Default::default",
            "Some",
            "String::new",
            "Vec::new",
            "all.iter",
            "all.iter.map",
            "all.iter.map.collect",
            "before.char_indices",
            "before.char_indices.rev",
            "before.char_indices.rev.take_while",
            "before.char_indices.rev.take_while.last",
            "before.char_indices.rev.take_while.last.map",
            "before.char_indices.rev.take_while.last.map.unwrap_or",
            "before.len",
            "c.is_alphanumeric",
            "compute",
            "crate::buffer::parse_best_effort",
            "crate::buffer::position_to_byte_offset",
            "crate::buffer::predicate_indicator",
            "current_word_prefix",
            "i.detail.as_deref",
            "i.label.as_str",
            "items.iter",
            "items.iter.filter",
            "items.iter.filter.collect",
            "items.iter.find",
            "items.iter.map",
            "items.iter.map.collect",
            "items.push",
            "name.clone",
            "name.starts_with",
            "name.to_string",
            "plg_frontend::stdlib_predicates",
            "plg_shared::builtins::atom_names",
            "plg_shared::builtins::functor_names",
            "pos",
            "seen.insert",
            "seen.into_iter",
            "seen.into_iter.collect",
            "std::collections::BTreeSet::new",
            "stdlib.iter",
            "stdlib.iter.cloned",
            "stdlib.iter.cloned.collect",
            "stdlib_keys.contains",
            "user_keys.contains",
            "user_predicates",
            "user_predicates.iter",
            "user_predicates.iter.cloned",
            "user_predicates.iter.cloned.collect"
          ],
          "funcs": [
            [
              "compute",
              928
            ],
            [
              "user_predicates",
              4100
            ],
            [
              "current_word_prefix",
              4745
            ],
            [
              "pos",
              5384
            ],
            [
              "prefix_at_end_of_word",
              5524
            ],
            [
              "prefix_at_start_of_line_is_empty",
              5647
            ],
            [
              "prefix_after_paren_starts_fresh",
              5775
            ],
            [
              "prefix_with_multibyte_char_before_cursor_no_panic",
              6217
            ],
            [
              "completion_finds_stdlib_member",
              6489
            ],
            [
              "completion_finds_builtin_findall",
              6808
            ],
            [
              "completion_finds_user_predicate_in_buffer",
              7067
            ],
            [
              "completion_filters_by_prefix",
              7462
            ],
            [
              "completion_omits_operators_and_cut",
              7858
            ],
            [
              "completion_user_predicate_shadows_stdlib",
              8347
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 5,
              "op.add": 1,
              "op.lor": 3,
              "op.land": 2,
              "max_depth": 17,
              "call_count": 106,
              "node_count": 2421,
              "member_count": 37,
              "op_density.eq": 0,
              "op_density.add": 0,
              "op_density.lor": 0,
              "op_density.land": 0,
              "max_concat_chain": 2,
              "member_depth_max": 7
            },
            "file": {
              "size": 9090,
              "entropy": 4.76
            },
            "text": {
              "lines": 243,
              "top_char": 101,
              "max_ws_run": 4,
              "digit_ratio": 0.01,
              "space_count": 2025,
              "char_entropy": 4.76,
              "unique_chars": 92,
              "top_char_null": 0,
              "string_density": 0.16,
              "top_char_ratio": 0.08,
              "avg_line_length": 36.41,
              "max_line_length": 99,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.1,
              "last_line_length": 1,
              "whitespace_ratio": 0.25,
              "identifier_density": 1.69,
              "line_length_stddev": 26.88,
              "normalized_string_count": 2.5,
              "repeated_char_sequences": 31,
              "suspicious_string_ratio": 0.03,
              "suspicious_comment_ratio": 0.07,
              "suspicious_identifier_ratio": 0.02,
              "normalized_unique_identifiers": 13.63
            },
            "binds": {
              "count": 29
            },
            "binary": {
              "peak_region_bytes": 9090,
              "peak_region_entropy": 4.87
            },
            "source": {
              "function_count": 14
            },
            "imports": {
              "count": 11,
              "wildcard": 1,
              "third_party_count": 11,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 499,
              "count": 39,
              "shell": 1,
              "avg_length": 12.79,
              "max_length": 60,
              "avg_entropy": 2.61,
              "empty_count": 2,
              "entropy_stddev": 1.15
            },
            "comments": {
              "chars": 2331,
              "count": 42,
              "lines": 42,
              "high_entropy": 3,
              "to_code_ratio": 0.21
            },
            "functions": {
              "count": 14,
              "density": 5.76,
              "avg_params": 0.5,
              "code_ratio": 0.74,
              "max_params": 2,
              "length_stddev": 19.34,
              "avg_name_length": 27.29,
              "no_params_count": 10,
              "avg_length_lines": 12.93,
              "max_length_lines": 81,
              "min_length_lines": 3,
              "high_entropy_names": 10,
              "avg_param_name_length": 6.29
            },
            "identifiers": {
              "count": 410,
              "unique": 108,
              "avg_length": 9.81,
              "max_length": 49,
              "min_length": 1,
              "avg_entropy": 2.52,
              "reuse_ratio": 0.26,
              "length_stddev": 9,
              "sequential_names": 2,
              "single_char_count": 3,
              "single_char_ratio": 0.03,
              "high_entropy_count": 13,
              "high_entropy_ratio": 0.12,
              "all_lowercase_ratio": 0.91,
              "all_uppercase_ratio": 0.02,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 6,
        "mol": "Md₂(In₃Pa)",
        "path": "patch-prolog-lsp-0.4.9.crate!!patch-prolog-lsp-0.4.9/src/completion.rs",
        "pid": 0,
        "risk": 2,
        "sha": "f39ed43988ea3b80a1b295cc26bfd17fbe0fbb811c2df996857ffed2ad6a970a",
        "size": 9090,
        "traits": [
          {
            "id": "metadata/import/rust/std/collections/btreeset::std/collections/btreeset",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::collections::BTreeSet",
            "spans": [
              [
                645,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/stdlib_predicates::plg_frontend/stdlib_predicates",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::stdlib_predicates",
            "spans": [
              [
                678,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/builtins/atom_names::plg_shared/builtins/atom_names",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::builtins::atom_names",
            "spans": [
              [
                738,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/builtins/functor_names::plg_shared/builtins/functor_names",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::builtins::functor_names",
            "spans": [
              [
                750,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/completionitem::tower_lsp/lsp_types/completionitem",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::CompletionItem",
            "spans": [
              [
                793,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/completionitemkind::tower_lsp/lsp_types/completionitemkind",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::CompletionItemKind",
            "spans": [
              [
                809,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/position::tower_lsp/lsp_types/position",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Position",
            "spans": [
              [
                829,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/parse_best_effort::crate/buffer/parse_best_effort",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::parse_best_effort",
            "spans": [
              [
                861,
                32
              ]
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/position_to_byte_offset::crate/buffer/position_to_byte_offset",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::position_to_byte_offset",
            "spans": [
              [
                880,
                38
              ]
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/predicate_indicator::crate/buffer/predicate_indicator",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::predicate_indicator",
            "spans": [
              [
                905,
                34
              ]
            ]
          },
          {
            "id": "metadata/import/rust/super::super",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports super::*",
            "spans": [
              [
                5369,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                123,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                219,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                1837,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "spans": [
              [
                6124,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                2925,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-cfg-test",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[cfg(test)] attribute",
            "spans": [
              [
                5336,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test-attr",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[test] attribute",
            "spans": [
              [
                5508,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test",
            "conf": 0.95,
            "crit": 3,
            "desc": "Rust test marker or harness",
            "uses": [
              16,
              17
            ],
            "spans": [
              [
                5336,
                12
              ],
              [
                5508,
                11
              ]
            ]
          }
        ],
        "type": "rust"
      },
      {
        "ctx": [
          {
            "b": "fe1E\u003ev02$8Bvp4SB.$YcBt4fow[=c%BzkVhu)aDVLPTZ-zeZRtzY\u003cdnwGTDlqD3Kqv@bN@B7DFoxKM09wmYv!zE)(iBzbj)fe1E\u003ex\u003eg^)Bzku3wPw]ozE^s0aARpday/LmB8M7K3nj4Q3nj4QaxJa%A+funA=91daAImmxkzc4u@HMzy*?ujoMaAHBzkVhdpsofC4CLlw]zYjzfoVpx!r?hvrDT5aAhvjwnbKZBy/I2fe1E\u003evR64TB-RappgXu!x(bksay]4}vrDydazth3wnC*$aARTnvruMkvrcx%C{4csB8V5nB7GznvriM1az(mqBzisEwPJ0gBp6VOaS$igvRGE$x([RYazC{uyisxjB0bNyaARpdazbtdB95J\u003cpdcjyAaJ{dayMyjB.Lu3w[=GwB98XzwGU/6B962Sra]?Ife1E\u003ezfo]fy?khnwO(vaC{3WyAaJK3vruj4zxJLfAV!+5wmcJ]B0a)lwnc6}v@@\u0026dB.#7GaAIDzCvZ",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "azC)tvixSkA=\u003e(lB-H]beP+MGBrCKyz^)J]z6glyx(mGlvrVd2wGSgcz!i#jBzbxf3nj4Qaz++fwGV5ovrcDjvix5@vrDT5azbLjayErHvqPNtu{t?:aARp9BshbLvScv4azb56By/FnvqYP#zeTDaaARKrwPzi%Bp6VOaS$Ynaz\u003e?6eOeEbBrC4nw[CQ{B0bWvBzbPnBrCpte^.@dB7DFky?E9!A=k\u0026qwO#3ti=/yNy?Wu=Ab]J2x\u003e7N[wPG{uB-RapAboe]B7/05wN)?.lrcPJr7P?-i%{aKwGV8kCv+/4y\u0026:LRi=5\u003eRuVZNjwPG)[DQ\u00260@z:XeGx(mTbx(v(!wPI*ezGxwuawuY-vruj4zy=]bz/YSmx(v(uaw#S=xjSRprDq]7i%(sqB7DF7A::63iYZ.)w[CQ{iY.F6A+5J=Byf09B7]-gz/dSz3ugb%azbHlv@Dj6B-.gyv@DmbwO#PJasqeKAX5tLz/YSmx(v(Iaw=#$x([6czy=]MA+NMScrk85diHiaawV@#x(v(Km@JG/l$G$AzFsibz/eD:B8V5nB7EJTDKp(rarUGiBrCEfzdK?MaA}:Awm5+!uVo}8x(\u003c",
            "ln": 768,
            "col": 22,
            "line": 15
          },
          {
            "b": "B7D)farR^HEld=UarR!vw/$/euUB1Vwfujwq/uI:c#rE6wnb{]uW3MuaBLwzy\u0026:egDMV74zE\u003c@s3vJl*bu[U\u0026xdd\u003ekB95\u003cp3t\u003cY(aARgoBAnNK3lQDlaA.:paAIWAwPx*)dMW$AarR^Hw]n-lA+M{Jat2=1rDq)#DKp(rarR^HarTW8y=TQ@vrcB2c)Anqy?kTXfe4A:A4=rAB963Ny:7qXB-8zzvq)Rz3lQDlaBKO7arR^Hw]n-gz/Wsyx(mGyaAYE}efFCovrb^^By/FNaAYE}df",
            "ln": 3786,
            "col": 17,
            "line": 89
          },
          {
            "b": "AV^IeaAg+bx\u003e5qmb4V1rwN/*[wfs/XvqGv)efFOzBrC{GBzblaiZn3pdj+/GarR^HarR!P3lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-6x(mE5uVP}0xkzc^v@Dj6z/]@duU0.Wx(mTbx(v(qdiJ%AarR^HarR^Hy?mYhB8\u003e+kjS\u003e}(x(v/@BzkVhc}k:gB7Glgx([6jwNx4-wO+)aauz7%w[+*)wgf[@e)Jori%)8MarR^HarUGiBrCQnB8Sl",
            "ln": 4221,
            "col": 17,
            "line": 109
          },
          {
            "b": "x([6czxZI\u003e3lQDlarR^Haz+Rhaz+$aauZ\u0026*v{%gZAWU%tB8SM\u00263lQDlarR^HayPtjwPz)1wPn\u003ewy\u0026r/oA:-\u0026#wIe4CvrcDvaAhmuc[)g{fEXCj3lQDlarR^HayPtjwPz)1wPn\u003ewy\u0026r/oA:-\u0026#wIdLiwgO\u003cxz/WrXefD@4dlv\u003eVarR!P3jm)#arSr\u003cawD#{Bzir",
            "ln": 4471,
            "col": 65,
            "line": 116
          },
          {
            "b": "y?mYhB8\u003e+kjS\u003e}/auz7%w[=c[vqG:dss+Omc%d]HawsjptY7-E3lQDlarR^HayPtjwPz(oc$vgjAclnld06AsefF[IB0@Z[au7-2asqkKx^+zVe[]xlzF%A7c[cPb3lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-jyIv:euVQs1y?Wu=Ab]J2x\u003e7N[wPGmG",
            "ln": 5552,
            "col": 9,
            "line": 145
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "crate::buffer::word_at_position"
            ],
            [
              "",
              "name.is_empty"
            ],
            [
              "",
              "is_engine_provided"
            ],
            [
              "",
              "find_first_clause_head.map"
            ],
            [
              "",
              "find_first_clause_head"
            ],
            [
              "",
              "plg_shared::BUILTINS.iter.any"
            ],
            [
              "",
              "plg_shared::BUILTINS.iter"
            ],
            [
              "",
              "plg_frontend::stdlib_predicates.iter.any"
            ],
            [
              "",
              "plg_frontend::stdlib_predicates.iter"
            ],
            [
              "",
              "plg_frontend::stdlib_predicates"
            ],
            [
              "",
              "content.lines.enumerate"
            ],
            [
              "",
              "content.lines"
            ],
            [
              "",
              "head_match_column"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "uri.clone"
            ],
            [
              "",
              "name.chars.count"
            ],
            [
              "",
              "name.chars"
            ],
            [
              "",
              "line.len"
            ],
            [
              "",
              "line.trim_start.len"
            ],
            [
              "",
              "line.trim_start"
            ],
            [
              "",
              "line.trim_start"
            ],
            [
              "",
              "trimmed.starts_with"
            ],
            [
              "",
              "name.len"
            ],
            [
              "",
              "after.chars.next"
            ],
            [
              "",
              "after.chars"
            ],
            [
              "",
              "after.trim_start"
            ],
            [
              "",
              "rest.starts_with"
            ],
            [
              "",
              "rest.starts_with"
            ],
            [
              "",
              "rest.is_empty"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "tower_lsp::lsp_types::Url::parse.unwrap"
            ],
            [
              "",
              "tower_lsp::lsp_types::Url::parse"
            ],
            [
              "",
              "compute.expect"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "uri"
            ],
            [
              "",
              "scalar"
            ],
            [
              "",
              "compute.expect"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "uri"
            ],
            [
              "",
              "scalar"
            ],
            [
              "",
              "compute.expect"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "uri"
            ],
            [
              "",
              "scalar"
            ],
            [
              "",
              "scalar"
            ],
            [
              "",
              "compute.expect"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "uri"
            ],
            [
              "",
              "scalar"
            ],
            [
              "",
              "compute.expect"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "uri"
            ],
            [
              "",
              "scalar"
            ],
            [
              "",
              "compute.expect"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "uri"
            ],
            [
              "",
              "plg_frontend::stdlib_predicates"
            ],
            [
              "",
              "plg_shared::BUILTINS"
            ],
            [
              "",
              "tower_lsp::lsp_types::GotoDefinitionResponse"
            ],
            [
              "",
              "tower_lsp::lsp_types::Location"
            ],
            [
              "",
              "tower_lsp::lsp_types::Position"
            ],
            [
              "",
              "tower_lsp::lsp_types::Range"
            ],
            [
              "",
              "tower_lsp::lsp_types::Url"
            ],
            [
              "",
              "crate::buffer::word_at_position"
            ],
            [
              "",
              "super::*"
            ]
          ],
          "mbr": [
            "BUILTINS.iter",
            "BUILTINS.iter.any",
            "Url::parse.unwrap",
            "after.chars",
            "after.chars.next",
            "after.trim_start",
            "compute.expect",
            "content.lines",
            "content.lines.enumerate",
            "find_first_clause_head.map",
            "line.len",
            "line.trim_start",
            "line.trim_start.len",
            "name.chars",
            "name.chars.count",
            "name.is_empty",
            "name.len",
            "rest.is_empty",
            "rest.starts_with",
            "s.name",
            "stdlib_predicates.iter",
            "stdlib_predicates.iter.any",
            "trimmed.starts_with",
            "uri.clone"
          ],
          "tgt": [
            "Some",
            "after.chars",
            "after.chars.next",
            "after.trim_start",
            "compute",
            "compute.expect",
            "content.lines",
            "content.lines.enumerate",
            "crate::buffer::word_at_position",
            "find_first_clause_head",
            "find_first_clause_head.map",
            "head_match_column",
            "is_engine_provided",
            "line.len",
            "line.trim_start",
            "line.trim_start.len",
            "name.chars",
            "name.chars.count",
            "name.is_empty",
            "name.len",
            "plg_frontend::stdlib_predicates",
            "plg_frontend::stdlib_predicates.iter",
            "plg_frontend::stdlib_predicates.iter.any",
            "plg_shared::BUILTINS.iter",
            "plg_shared::BUILTINS.iter.any",
            "pos",
            "rest.is_empty",
            "rest.starts_with",
            "scalar",
            "tower_lsp::lsp_types::Url::parse",
            "tower_lsp::lsp_types::Url::parse.unwrap",
            "trimmed.starts_with",
            "uri",
            "uri.clone"
          ],
          "funcs": [
            [
              "compute",
              1121
            ],
            [
              "is_engine_provided",
              1998
            ],
            [
              "find_first_clause_head",
              2326
            ],
            [
              "head_match_column",
              3168
            ],
            [
              "uri",
              3898
            ],
            [
              "pos",
              3978
            ],
            [
              "scalar",
              4074
            ],
            [
              "finds_single_compound_definition",
              4301
            ],
            [
              "returns_first_clause_for_multi_clause_predicate",
              4873
            ],
            [
              "finds_atom_only_clause",
              5218
            ],
            [
              "skips_builtins",
              5459
            ],
            [
              "skips_stdlib_predicates",
              5676
            ],
            [
              "returns_none_when_no_definition_exists",
              5838
            ],
            [
              "skips_uses_inside_clause_bodies",
              6094
            ],
            [
              "skips_partial_word_matches",
              6432
            ],
            [
              "skips_comments_that_mention_the_name",
              6690
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 2,
              "op.add": 1,
              "op.lor": 3,
              "op.sub": 1,
              "max_depth": 29,
              "call_count": 62,
              "node_count": 1733,
              "member_count": 24,
              "op_density.eq": 0,
              "op_density.add": 0,
              "op_density.lor": 0,
              "op_density.sub": 0,
              "max_concat_chain": 2,
              "member_depth_max": 3
            },
            "file": {
              "size": 6978,
              "entropy": 4.75
            },
            "text": {
              "lines": 183,
              "top_char": 101,
              "max_ws_run": 1,
              "digit_ratio": 0.01,
              "space_count": 1558,
              "char_entropy": 4.75,
              "unique_chars": 86,
              "top_char_null": 0,
              "string_density": 0.11,
              "top_char_ratio": 0.07,
              "avg_line_length": 37.13,
              "max_line_length": 96,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.1,
              "last_line_length": 1,
              "whitespace_ratio": 0.25,
              "identifier_density": 1.59,
              "line_length_stddev": 28.37,
              "normalized_string_count": 1.48,
              "repeated_char_sequences": 17,
              "suspicious_comment_ratio": 0.08,
              "suspicious_identifier_ratio": 0.03,
              "normalized_unique_identifiers": 10.25
            },
            "binds": {
              "count": 25
            },
            "binary": {
              "peak_region_bytes": 5954,
              "peak_region_entropy": 4.81
            },
            "source": {
              "function_count": 16
            },
            "imports": {
              "count": 9,
              "wildcard": 1,
              "third_party_count": 9,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 514,
              "count": 20,
              "url_count": 1,
              "avg_length": 25.7,
              "max_length": 60,
              "path_count": 1,
              "avg_entropy": 3.38,
              "entropy_stddev": 0.85
            },
            "comments": {
              "code": 1,
              "chars": 2107,
              "count": 37,
              "lines": 37,
              "base64": 2,
              "high_entropy": 1,
              "to_code_ratio": 0.25
            },
            "functions": {
              "count": 16,
              "density": 8.74,
              "avg_params": 0.75,
              "code_ratio": 0.64,
              "max_params": 3,
              "length_stddev": 5.09,
              "avg_name_length": 21.56,
              "no_params_count": 10,
              "avg_length_lines": 7.38,
              "max_length_lines": 20,
              "min_length_lines": 3,
              "high_entropy_names": 7,
              "avg_param_name_length": 5.08
            },
            "identifiers": {
              "count": 291,
              "unique": 77,
              "avg_length": 9.55,
              "max_length": 47,
              "min_length": 1,
              "avg_entropy": 2.46,
              "reuse_ratio": 0.26,
              "length_stddev": 9.06,
              "sequential_names": 2,
              "single_char_count": 2,
              "single_char_ratio": 0.03,
              "high_entropy_count": 7,
              "high_entropy_ratio": 0.09,
              "all_lowercase_ratio": 0.87,
              "all_uppercase_ratio": 0.01
            }
          }
        },
        "id": 7,
        "mol": "Md₂(InPa)",
        "path": "patch-prolog-lsp-0.4.9.crate!!patch-prolog-lsp-0.4.9/src/definition.rs",
        "pid": 0,
        "risk": 2,
        "sha": "d64232482eacc81e596fe4cbf55ebe4a8596caba2f38717c7eeda1e138e696db",
        "size": 6978,
        "traits": [
          {
            "id": "metadata/import/rust/plg_frontend/stdlib_predicates::plg_frontend/stdlib_predicates",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::stdlib_predicates",
            "spans": [
              [
                939,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/builtins::plg_shared/builtins",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::BUILTINS",
            "spans": [
              [
                976,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/gotodefinitionresponse::tower_lsp/lsp_types/gotodefinitionresponse",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::GotoDefinitionResponse",
            "spans": [
              [
                1025,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/location::tower_lsp/lsp_types/location",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Location",
            "spans": [
              [
                1049,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/position::tower_lsp/lsp_types/position",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Position",
            "spans": [
              [
                1059,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/range::tower_lsp/lsp_types/range",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Range",
            "spans": [
              [
                1069,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/url::tower_lsp/lsp_types/url",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Url",
            "spans": [
              [
                1076,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/word_at_position::crate/buffer/word_at_position",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::word_at_position",
            "spans": [
              [
                1087,
                31
              ]
            ]
          },
          {
            "id": "metadata/import/rust/super::super",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports super::*",
            "spans": [
              [
                3883,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                42,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                303,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "spans": [
              [
                59,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                160,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                816,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-cfg-test",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[cfg(test)] attribute",
            "spans": [
              [
                3850,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test-attr",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[test] attribute",
            "spans": [
              [
                4285,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test",
            "conf": 0.95,
            "crit": 3,
            "desc": "Rust test marker or harness",
            "uses": [
              14,
              15
            ],
            "spans": [
              [
                3850,
                12
              ],
              [
                4285,
                11
              ]
            ]
          }
        ],
        "type": "rust"
      },
      {
        "ctx": [
          {
            "b": "p-%p.vp%E@B98baB1OOkwP-69B0a\u003efy?E9!A=k\u0026qwO#3ti-6m9B7Gx1aAIDzBzbkdB8Mhwv}u02fcIDSz/YSmx(v)gaARpdaAg+fB7GwmvqG%}vpTTaBAg/1yJyRgy\u0026sIuB98Chx\u003eIa3azC.nzY\u0026R4x([olaAIKBx\u003eI6{wPFhifcIDZx([3bB-X-",
            "ln": 17,
            "col": 18,
            "line": 1
          },
          {
            "b": "wPI^aC4z!gBrCWzayPdgoJa+gu@yAJxjUD[C4\u003ev(fe1E\u003eu@H#^A:@VPvq]P%vqYP#B-7-3A+]DcwGV8dwGU]6w[t\u003c\u003cx(mMay?m\u003c5zdK\u00262x(W={BzMjB\u0026^^mozF{UsBAh8kx9{pBaS$(EvqfK?AV/ExaAg+fB7DF6vpK6}z/{dO3jp]%wGV5owi8+Yz!%l3v@#B6zGv\u003c1lr4#pwLDPLi%(sqB7DFky?E9!A=k\u0026qwO#3ti^Tk5y\u002603:By^0Cp*[x=wKQSWz/NxKp*[x=wPxsAq/u/0v}wwyA4AbFx(n3vi%{aKwGU@dxj2Z[vrb{\u0026iY.Q^r76zKlsiL.efE(gvqWRsq/)4]zF8KUBy/GgwPAhX3uZA3aARKCwPzc]B8Tf3y\u0026:M5BA}?pB2(vel${7xzF%Prx\u003e5Xpl${7xzF%Prx\u003e77MC4CYdBA]zWp\u0026yz?BzkVhefE\u00260zF9Kei%(s8z/fSrax86oqBr(lasqeKAV^H/b5?vhy:7}F3ugb%azbHlv@Dj6B-.gyv@DmbwO#PJasqeKAW-a.j%i)qv)0d[vp%E@B98baj%kgVarR^Hy?mYhzfo}yx(n37A=bDeauZ\u0026CBAh8kxgV#.wPzW1AYMm0wP]KKi%)8MarSr\u003cax8\u0026.wft#cwGUY8By/GgwPw]qx([2hBzbkdB97@ex\u003c@iazY\u0026+oB0bBxwN]H+vru74asI8rzdm6%fet6=arR^Hfe1CRAbYxawg].\u0026aMv{GdiJbsB-8pzvriM4wObT]wN(}yFrRf#xK@q@z/6Dcy?mSfAb]JewO#41aAITny?Wu3w]zYjBzbj)arR^Hfe1C?vqPM#A+eW2z/dfIp*[x=wN(]ZmnMoFk#ZoDsS?^7aARpdayYF9w[u09yH}6@B0bgsB0byBzxJ+fzE\u003cd$arR^WfcCdPzdm6%B0b7kAV/r",
            "ln": 254,
            "col": 43,
            "line": 5
          },
          {
            "b": "Ef{rmfe1CzzE\u003c@mvrcm1zF78hwPw]6vqG:5B7]-caA7\u003cmvixJfwN]H+vru66Bzb98azC)twmYv!zE)u3zF%-jwPzumavxNNyZI*GfcCsIBy/Iov@Di}azbUjz6i}lwGU@2A=U/jcVZzJwN/U0wmYo]vruB8eOocyv@#TfaA7+1B-IIlzEWm0asInw",
            "ln": 1863,
            "col": 1,
            "line": 39
          },
          {
            "b": "B7]@iB1OObw/$I8C4CYtaz+FbxjRz)arR^WfcB.Dw[CQ{az2.cAV/jcyH}MfBzbxfaA?Eux\u003c$)\u0026efFUAwmZ0dv{%g\u0026uVP}6wPF#6C{1IEB-7Yhz/NxKvrc77C{$uMarR^Hw]zYjc[5$wzdLmvvrc77C{$o!B9hbdwPI%cz/d0Dx(k56vqG:\u003ewPF#v",
            "ln": 2788,
            "col": 57,
            "line": 60
          },
          {
            "b": "vp%djaz2Ole]tfvB75Y)e[nZozE\u003ejBed9HxarR^HarSo?l$G$sB.(dXi+h/lvrDydc[bGCarR!P3vJl*bu[U\u0026xdd\u003ekB95\u003cp3t\u003cY(aARgoBAnNK3lQDlaA.:paAIWAwPx*)dMW$AarR^Hbu]n3B97W{arR^Hw]n-7z/oe[vS=o{wPzc\u003evrk^[z^N3?vp%E@B98baB0@EWDKp(rarR^HarU9lB7GxlaT*\u0026sze:StwHF:wc$Wyodk1\u003eyA42g7AW-RCzxZIZx(^S)ze:Pxc[cPb3lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-jD2v.jCWC35A=k#9Ab](cBZ]07uVo}8x-",
            "ln": 4474,
            "col": 13,
            "line": 105
          },
          {
            "b": "B09Q*v@Dj6B-.gyb5!@xz/m6StYag)auz7%vQTp9t}4yhzxZI\u003e3lQDlarR^HayPtjwPz)1wPn\u003ewwnbE+B1Rouzyu}+atCrb3lQDlarR^Haz+Rhay(PTaspSkvp%T=fKl:EarR^HarR^Hfe1C:x(mG8g9y7By-\u003eC!asF@@x(mD)CX7zmaMwcsaz++fwGSYIv@De",
            "ln": 4785,
            "col": 17,
            "line": 121
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "plg_shared::StringInterner::new"
            ],
            [
              "",
              "plg_frontend::Parser::parse_program_with_directives.map.unwrap_or_default"
            ],
            [
              "",
              "plg_frontend::Parser::parse_program_with_directives.map"
            ],
            [
              "",
              "plg_frontend::Parser::parse_program_with_directives"
            ],
            [
              "",
              "plg_frontend::Parser::parse_program_with_spans"
            ],
            [
              "",
              "all.extend"
            ],
            [
              "",
              "undefined_warnings"
            ],
            [
              "",
              "std::collections::BTreeMap::new"
            ],
            [
              "",
              "plg_frontend::lint::undefined_calls"
            ],
            [
              "",
              "callees.entry.or_insert"
            ],
            [
              "",
              "callees.entry"
            ],
            [
              "",
              "plg_frontend::SourceMap::new"
            ],
            [
              "",
              "Vec::new"
            ],
            [
              "",
              "message.push_str"
            ],
            [
              "",
              "interner.resolve"
            ],
            [
              "",
              "diags.push"
            ],
            [
              "",
              "span_to_range"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "SOURCE.to_string"
            ],
            [
              "",
              "message.clone"
            ],
            [
              "",
              "Default::default"
            ],
            [
              "",
              "sm.utf16_position"
            ],
            [
              "",
              "sm.utf16_position"
            ],
            [
              "",
              "span_to_range"
            ],
            [
              "",
              "plg_frontend::SourceMap::new"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "SOURCE.to_string"
            ],
            [
              "",
              "err.message.clone"
            ],
            [
              "",
              "Default::default"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "std::collections::BTreeMap"
            ],
            [
              "",
              "plg_frontend::CallSite"
            ],
            [
              "",
              "plg_frontend::ParseError"
            ],
            [
              "",
              "plg_frontend::Parser"
            ],
            [
              "",
              "plg_frontend::SourceMap"
            ],
            [
              "",
              "plg_frontend::lint"
            ],
            [
              "",
              "plg_shared::STDLIB_PL"
            ],
            [
              "",
              "plg_shared::Span"
            ],
            [
              "",
              "plg_shared::StringInterner"
            ],
            [
              "",
              "tower_lsp::lsp_types::Diagnostic"
            ],
            [
              "",
              "tower_lsp::lsp_types::DiagnosticSeverity"
            ],
            [
              "",
              "tower_lsp::lsp_types::Position"
            ],
            [
              "",
              "tower_lsp::lsp_types::Range"
            ],
            [
              "",
              "super::*"
            ]
          ],
          "mbr": [
            "Parser::parse_program_with_directives.map",
            "Parser::parse_program_with_directives.map.unwrap_or_default",
            "SOURCE.to_string",
            "all.extend",
            "callees.entry",
            "callees.entry.or_insert",
            "cs.arity",
            "cs.functor",
            "cs.span",
            "diags.push",
            "err.message",
            "err.message.clone",
            "err.span",
            "interner.resolve",
            "message.clone",
            "message.push_str",
            "sm.utf16_position",
            "span.hi",
            "span.lo",
            "u.callee",
            "u.suggestion"
          ],
          "tgt": [
            "Default::default",
            "SOURCE.to_string",
            "Some",
            "Vec::new",
            "all.extend",
            "callees.entry",
            "callees.entry.or_insert",
            "compute",
            "diags.push",
            "err.message.clone",
            "interner.resolve",
            "message.clone",
            "message.push_str",
            "plg_frontend::Parser::parse_program_with_directives",
            "plg_frontend::Parser::parse_program_with_directives.map",
            "plg_frontend::Parser::parse_program_with_directives.map.unwrap_or_default",
            "plg_frontend::Parser::parse_program_with_spans",
            "plg_frontend::SourceMap::new",
            "plg_frontend::lint::undefined_calls",
            "plg_shared::StringInterner::new",
            "sm.utf16_position",
            "span_to_range",
            "std::collections::BTreeMap::new",
            "undefined_warnings"
          ],
          "funcs": [
            [
              "compute",
              651
            ],
            [
              "undefined_warnings",
              2091
            ],
            [
              "span_to_range",
              3674
            ],
            [
              "parse_error_to_diagnostic",
              4208
            ],
            [
              "good_buffer_has_no_diagnostics",
              4598
            ],
            [
              "syntax_error_produces_positioned_diagnostic",
              4718
            ],
            [
              "diagnostic_uses_surface_lexeme_not_internal_variant",
              5207
            ],
            [
              "undefined_predicate_is_a_warning_on_the_call_site",
              5471
            ],
            [
              "defined_and_builtin_calls_produce_no_warnings",
              6305
            ],
            [
              "comment_mention_does_not_squiggle_only_the_real_call",
              6657
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 2,
              "op.land": 1,
              "max_depth": 22,
              "call_count": 35,
              "node_count": 1653,
              "member_count": 21,
              "op_density.eq": 0,
              "op_density.land": 0,
              "member_depth_max": 3
            },
            "file": {
              "size": 7611,
              "entropy": 4.77
            },
            "text": {
              "lines": 186,
              "top_char": 101,
              "max_ws_run": 1,
              "digit_ratio": 0.01,
              "space_count": 1691,
              "char_entropy": 4.77,
              "unique_chars": 92,
              "top_char_null": 0,
              "string_density": 0.12,
              "top_char_ratio": 0.08,
              "avg_line_length": 39.92,
              "max_line_length": 85,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.08,
              "last_line_length": 1,
              "whitespace_ratio": 0.25,
              "identifier_density": 1.84,
              "line_length_stddev": 26.86,
              "normalized_string_count": 1.69,
              "repeated_char_sequences": 22,
              "suspicious_string_ratio": 0.04,
              "suspicious_comment_ratio": 0.05,
              "suspicious_identifier_ratio": 0.04,
              "normalized_unique_identifiers": 13.79
            },
            "binds": {
              "count": 17
            },
            "binary": {
              "peak_region_bytes": 6587,
              "peak_region_entropy": 4.9
            },
            "source": {
              "function_count": 10
            },
            "imports": {
              "count": 14,
              "wildcard": 1,
              "third_party_count": 14,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 411,
              "count": 23,
              "shell": 1,
              "avg_length": 17.87,
              "max_length": 61,
              "avg_entropy": 2.94,
              "entropy_stddev": 1.09
            },
            "comments": {
              "chars": 2269,
              "count": 37,
              "lines": 37,
              "high_entropy": 2,
              "to_code_ratio": 0.25
            },
            "functions": {
              "count": 10,
              "density": 5.38,
              "avg_params": 1,
              "code_ratio": 0.77,
              "max_params": 5,
              "length_stddev": 9.78,
              "avg_name_length": 33.3,
              "no_params_count": 6,
              "avg_length_lines": 14.4,
              "max_length_lines": 37,
              "min_length_lines": 3,
              "high_entropy_names": 7,
              "avg_param_name_length": 6.5
            },
            "identifiers": {
              "count": 342,
              "unique": 104,
              "avg_length": 9.54,
              "max_length": 52,
              "min_length": 1,
              "avg_entropy": 2.4,
              "reuse_ratio": 0.3,
              "length_stddev": 10.19,
              "has_digit_ratio": 0.01,
              "sequential_names": 4,
              "single_char_count": 4,
              "single_char_ratio": 0.04,
              "high_entropy_count": 12,
              "high_entropy_ratio": 0.12,
              "all_lowercase_ratio": 0.76,
              "all_uppercase_ratio": 0.04
            }
          }
        },
        "id": 8,
        "mol": "Md(Pa)",
        "path": "patch-prolog-lsp-0.4.9.crate!!patch-prolog-lsp-0.4.9/src/diagnostics.rs",
        "pid": 0,
        "risk": 2,
        "sha": "81a6df2e2589549a1fba01b5faf09593c1d36b07a640df05191daec9af22cd1c",
        "size": 7611,
        "traits": [
          {
            "id": "metadata/import/rust/std/collections/btreemap::std/collections/btreemap",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::collections::BTreeMap",
            "spans": [
              [
                396,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/callsite::plg_frontend/callsite",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::CallSite",
            "spans": [
              [
                444,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/parseerror::plg_frontend/parseerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::ParseError",
            "spans": [
              [
                454,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/parser::plg_frontend/parser",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::Parser",
            "spans": [
              [
                466,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/sourcemap::plg_frontend/sourcemap",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::SourceMap",
            "spans": [
              [
                474,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_frontend/lint::plg_frontend/lint",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_frontend::lint",
            "spans": [
              [
                485,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/stdlib_pl::plg_shared/stdlib_pl",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::STDLIB_PL",
            "spans": [
              [
                509,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/span::plg_shared/span",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::Span",
            "spans": [
              [
                520,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/stringinterner::plg_shared/stringinterner",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::StringInterner",
            "spans": [
              [
                526,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/diagnostic::tower_lsp/lsp_types/diagnostic",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Diagnostic",
            "spans": [
              [
                570,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/diagnosticseverity::tower_lsp/lsp_types/diagnosticseverity",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::DiagnosticSeverity",
            "spans": [
              [
                582,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/position::tower_lsp/lsp_types/position",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Position",
            "spans": [
              [
                602,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/range::tower_lsp/lsp_types/range",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Range",
            "spans": [
              [
                612,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/super::super",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports super::*",
            "spans": [
              [
                4571,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                65,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                302,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "spans": [
              [
                1911,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                890,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "spans": [
              [
                773,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                2836,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-cfg-test",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[cfg(test)] attribute",
            "spans": [
              [
                4538,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test-attr",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[test] attribute",
            "spans": [
              [
                4582,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test",
            "conf": 0.95,
            "crit": 3,
            "desc": "Rust test marker or harness",
            "uses": [
              20,
              21
            ],
            "spans": [
              [
                4538,
                12
              ],
              [
                4582,
                11
              ]
            ]
          }
        ],
        "type": "rust"
      },
      {
        "ctx": [
          {
            "b": "fe1E\u003enn\u0026V.AYLsYzE\u003ezox(mH5azbLjayYFcy\u0026?myzGvuKv@bN@B7DFcwNP9(w]zYjB-RbmeO5B8x(mG)aAhvjwnbKZBy/IC3nj4Q3nj4Qavpi+y\u0026?myzxJF3B7ol8Acb/jzGu}gz/65dw].*bayGe8xj2Z[vrb{\u0026iYZ.)x(4)9zGv\u003c1wn+%=aMv{oaARpdaAH$dwEp7zaS$(nvR/P#v@C)?xjU%6vqYP#BzbkdA=(nwx(dA7C42i3wmoN\u003eayO[\u003ex(n0le*abbwGU/cz!\u003cGmaAIHgzGu}iC4CYt3nj4QaAzyAefG1LayPekayYFcy\u0026\u003cxeaA}HqB7DE?k$%=\u003cx(+z9zxJS",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "AV/mhC4CXpA+frgy\u003c6xhaARJAvqWiaAaK5#Bz(gxBz\u003e@azve3IaS@gOD2m2ey+o:EyH}xaxM569AV/NAB.\u003eOhvR3V\u003czxJv#wncd1C4z!czFiD@v}xH*zGErW3jp]%wGU@dxj2Z[vrb{\u0026iY.Q^BAh8kxgV#.wPzW1AX5tjwPzSsayYFcy\u0026\u003cxeBa3aSB-RapBz(wmA:JT7A5{3@B8UGdD2NtoiY.QUz*2YjefEG4C4CXYz/fVdzGG}JawDo+yJTO-z/fVdzGEALo\u003c@6TB-o#/zE+pvp\u0026yz?BzkVhEld=yB-Rapv@=11wJz\u003eYB.kk%AYMmdAa9^dwNw[TB97=2w[C$4BsXLNA+e=}v{%E\u003cuUKy*x\u003e7N[z/NxKCw?IjuTX4-AbP/iBzkVhEld=yAckRjw]n-3z/6DoBy=\u003egz/fVdzGE]ZcuBoHefF[IB7]-gz/dPUp\u0026yz?BzkVhdiHiaawV@#x(v(Knn\u0026V.AY$Q)3lQDlaz+RhaA}:Awfs2TCw?IjuTX4-AbP/iBzkVhc$vgkBy/uiefF[IB7]-gz/d0*i%)8MarUxgaA}:Awg?OquUa6",
            "ln": 469,
            "col": 23,
            "line": 8
          },
          {
            "b": "j%i0hvrc14e[]AsAWSv?zddxiD%}yBA+fc0wPzc^A+u!eefFUABy/GgwPxjGe[n*oy?m9#c[dj+arR^HarR^HarR^Hw]zZbvrrUvb71.^DWNs!efF?szdLmvvrc17e]2rszyuXWar\u0026l-3lQDlarR^HaBKOtarR^HarR!lau.[hb0o:Yzy]vby\u00260J?y?j-5",
            "ln": 2154,
            "col": 33,
            "line": 56
          },
          {
            "b": "arR!P3lQDlarR^Haxh])z8%ZKx(!wsDMT{[aBLv}j%h4Ne?O+Za$^$QuVQsfx(mMidj+/GarR!P3vJl*bu[U\u0026xdd\u003ekB95\u003cp3t\u003cY(aARgoBAnNK3lQDlaA.:paAIWAwPx*)dMW$AarR^Hw]n-gz/Wsyx(mGyaAYE}efFCvy=SXYgCQy4eJ$pNz/YSmx(v(iDKp(rarR^HarTH0B7]-gz/cXA3lQDlarR^HarR^Haz++fwH[fharR^HarR^HarR!pxKL{\u0026v@#p5iV}{Jy+b]oarR^HarR!P3lQDlaBKO7arR^Hbu]n3B97W{arR^Hw]n-nz/Pw}B-7-3A:Js0A=VetuUKy+ze0J\u003ey?k1zaBsCrarR^HarR!ywPP5sauZ\u0026\u003ez/Pw}vrt\u003c}z/YSmx(v(qb4$L7y\u0026pCuz/PV8a$K\u003cQz/WrXefD]3dlv\u003eVarR^HarR!nB8$]kByeQ0aT?K!vrk^^wPzu]c[cX\u0026q/uI:c)A\u003eNA+]ngdjEs=arR^HEf{r7arR^KtxBB$Bx]j@arR!szxKdwA+5K1zE^s0uT[k0B8M8avrt\u003c$Byxiic[co=3lQDlarR^Hao",
            "ln": 2878,
            "col": 6,
            "line": 73
          },
          {
            "b": "arR^$z*2YjlVl\u003c:wO#QhiYY#zA+//pc#yyQjW70n3lQDlarR^HarR^HarR^HayPtjwPz(oc#yOWvqH6$e[n*qByw)3B0@kAx(mD\u0026y?$pAdlv\u003eVarR^HarR^HarR^HarR!nB8$]kBrJ5He{pVtB.9gnz/fV9x(m#ub4tXey\u0026?myzxZIUi%)8MarR^HarR^H",
            "ln": 3619,
            "col": 10,
            "line": 105
          },
          {
            "b": "arV7t3lQDlatkw\u003cnn\u0026V.AV/BmA=#2naA8jgA::6dAXzSPA+3q4B.LVlx(m#mBzb98ay/tbAbo9cx(v(iz/6igB2\u003eBKvR6U9wO2:!3lQDlatkw\u003cx(+zbz/6DfwPRu\u0026y?kduvS==nC4CYdw{CIcaA}:Awg.ziA+#}dB.LVlx(k57z!0\u0026hv@DydwN/*#",
            "ln": 4605,
            "col": 3,
            "line": 135
          },
          {
            "b": "B0a[k3lQDlarR^Hatkw\u003cBzbkdB7F\u003c1zE:(1xKL{7z!paow[=c[vqG:7aA8cuBzbxfaz++fwIarjarR^HarR!ywPP58z/fVdzGE0:ar\u00269O.(l)Uw[=c[vqG:dss+Olc%d]Hawsjdi%)8MarR^HarUGiBrC=IjS[@!A+5J=Byf09B7]-gz/c$kz/fVd",
            "ln": 5263,
            "col": 73,
            "line": 151
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "crate::buffer::word_at_position"
            ],
            [
              "",
              "word.is_empty"
            ],
            [
              "",
              "plg_shared::builtins::doc"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "lookup_user_clause_head.map"
            ],
            [
              "",
              "lookup_user_clause_head"
            ],
            [
              "",
              "body.map"
            ],
            [
              "",
              "tower_lsp::lsp_types::HoverContents::Markup"
            ],
            [
              "",
              "crate::buffer::parse_best_effort"
            ],
            [
              "",
              "crate::buffer::predicate_indicator"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "render_head"
            ],
            [
              "",
              "interner.resolve.to_string"
            ],
            [
              "",
              "interner.resolve"
            ],
            [
              "",
              "interner.resolve"
            ],
            [
              "",
              "args.iter.map.collect"
            ],
            [
              "",
              "args.iter.map"
            ],
            [
              "",
              "args.iter"
            ],
            [
              "",
              "render_arg"
            ],
            [
              "",
              "interner.resolve.to_string"
            ],
            [
              "",
              "interner.resolve"
            ],
            [
              "",
              "n.to_string"
            ],
            [
              "",
              "f.to_string"
            ],
            [
              "",
              "crate::buffer::word_at_position"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "crate::buffer::word_at_position"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "compute.unwrap"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "compute.unwrap"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "compute.unwrap"
            ],
            [
              "",
              "compute"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "crate::buffer::word_at_position"
            ],
            [
              "",
              "pos"
            ],
            [
              "",
              "plg_shared::StringInterner"
            ],
            [
              "",
              "plg_shared::Term"
            ],
            [
              "",
              "plg_shared::builtins"
            ],
            [
              "",
              "tower_lsp::lsp_types::Hover"
            ],
            [
              "",
              "tower_lsp::lsp_types::HoverContents"
            ],
            [
              "",
              "tower_lsp::lsp_types::MarkupContent"
            ],
            [
              "",
              "tower_lsp::lsp_types::MarkupKind"
            ],
            [
              "",
              "tower_lsp::lsp_types::Position"
            ],
            [
              "",
              "crate::buffer::parse_best_effort"
            ],
            [
              "",
              "crate::buffer::predicate_indicator"
            ],
            [
              "",
              "crate::buffer::word_at_position"
            ],
            [
              "",
              "super::*"
            ]
          ],
          "mbr": [
            "args.iter",
            "args.iter.map",
            "args.iter.map.collect",
            "body.map",
            "clause.head",
            "compute.unwrap",
            "f.to_string",
            "h.contents",
            "interner.resolve",
            "interner.resolve.to_string",
            "lookup_user_clause_head.map",
            "n.to_string",
            "word.is_empty"
          ],
          "tgt": [
            "Some",
            "args.iter",
            "args.iter.map",
            "args.iter.map.collect",
            "body.map",
            "compute",
            "compute.unwrap",
            "crate::buffer::parse_best_effort",
            "crate::buffer::predicate_indicator",
            "crate::buffer::word_at_position",
            "f.to_string",
            "interner.resolve",
            "interner.resolve.to_string",
            "lookup_user_clause_head",
            "lookup_user_clause_head.map",
            "n.to_string",
            "plg_shared::builtins::doc",
            "pos",
            "render_arg",
            "render_head",
            "tower_lsp::lsp_types::HoverContents::Markup",
            "word.is_empty"
          ],
          "funcs": [
            [
              "compute",
              785
            ],
            [
              "lookup_user_clause_head",
              1514
            ],
            [
              "render_head",
              1880
            ],
            [
              "render_arg",
              2487
            ],
            [
              "pos",
              2990
            ],
            [
              "word_under_cursor_in_middle",
              3130
            ],
            [
              "word_under_cursor_at_start",
              3297
            ],
            [
              "hover_on_builtin_shows_doc",
              3473
            ],
            [
              "hover_on_user_predicate_shows_clause_head",
              3852
            ],
            [
              "hover_outside_a_word_returns_none",
              4369
            ],
            [
              "hover_on_unknown_word_returns_none",
              4491
            ],
            [
              "hover_on_between_shows_doc",
              4777
            ],
            [
              "word_at_position_with_multibyte_char_before_cursor",
              5133
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 1,
              "max_depth": 17,
              "call_count": 40,
              "node_count": 1521,
              "member_count": 13,
              "op_density.eq": 0,
              "member_depth_max": 4
            },
            "file": {
              "size": 5486,
              "entropy": 4.79
            },
            "text": {
              "lines": 157,
              "top_char": 101,
              "max_ws_run": 1,
              "digit_ratio": 0.01,
              "space_count": 1246,
              "char_entropy": 4.79,
              "unique_chars": 87,
              "top_char_null": 0,
              "string_density": 0.17,
              "top_char_ratio": 0.07,
              "avg_line_length": 33.94,
              "max_line_length": 92,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.11,
              "last_line_length": 1,
              "whitespace_ratio": 0.26,
              "identifier_density": 1.69,
              "line_length_stddev": 27.68,
              "normalized_string_count": 2.15,
              "repeated_char_sequences": 23,
              "suspicious_string_ratio": 0.07,
              "suspicious_comment_ratio": 0.06,
              "suspicious_identifier_ratio": 0.07,
              "normalized_unique_identifiers": 12.2
            },
            "binds": {
              "count": 12
            },
            "binary": {
              "peak_region_bytes": 5486,
              "peak_region_entropy": 4.85
            },
            "source": {
              "function_count": 13
            },
            "imports": {
              "count": 12,
              "wildcard": 1,
              "third_party_count": 12,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 422,
              "count": 27,
              "shell": 2,
              "avg_length": 15.63,
              "max_length": 65,
              "avg_entropy": 2.95,
              "entropy_stddev": 0.89
            },
            "comments": {
              "chars": 1125,
              "count": 18,
              "lines": 18,
              "high_entropy": 1,
              "to_code_ratio": 0.13
            },
            "functions": {
              "count": 13,
              "density": 8.28,
              "avg_params": 0.77,
              "code_ratio": 0.71,
              "max_params": 2,
              "length_stddev": 4.86,
              "avg_name_length": 24.38,
              "no_params_count": 8,
              "avg_length_lines": 8.54,
              "max_length_lines": 21,
              "min_length_lines": 3,
              "high_entropy_names": 5,
              "avg_param_name_length": 5.7
            },
            "identifiers": {
              "count": 266,
              "unique": 89,
              "avg_length": 8.78,
              "max_length": 50,
              "min_length": 1,
              "avg_entropy": 2.32,
              "reuse_ratio": 0.33,
              "length_stddev": 8.84,
              "sequential_names": 6,
              "single_char_count": 6,
              "single_char_ratio": 0.07,
              "high_entropy_count": 5,
              "high_entropy_ratio": 0.06,
              "all_lowercase_ratio": 0.78
            }
          }
        },
        "id": 9,
        "mol": "Md₂(In₃Pa)",
        "path": "patch-prolog-lsp-0.4.9.crate!!patch-prolog-lsp-0.4.9/src/hover.rs",
        "pid": 0,
        "risk": 2,
        "sha": "1d048c5fcedcdd5f0913e2bc0127d8d65c723dc6e6e76e96325137f8716e434c",
        "size": 5486,
        "traits": [
          {
            "id": "metadata/import/rust/plg_shared/stringinterner::plg_shared/stringinterner",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::StringInterner",
            "spans": [
              [
                584,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/term::plg_shared/term",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::Term",
            "spans": [
              [
                600,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/plg_shared/builtins::plg_shared/builtins",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports plg_shared::builtins",
            "spans": [
              [
                606,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/hover::tower_lsp/lsp_types/hover",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Hover",
            "spans": [
              [
                644,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/hovercontents::tower_lsp/lsp_types/hovercontents",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::HoverContents",
            "spans": [
              [
                651,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/markupcontent::tower_lsp/lsp_types/markupcontent",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::MarkupContent",
            "spans": [
              [
                666,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/markupkind::tower_lsp/lsp_types/markupkind",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::MarkupKind",
            "spans": [
              [
                681,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types/position::tower_lsp/lsp_types/position",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::Position",
            "spans": [
              [
                693,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/parse_best_effort::crate/buffer/parse_best_effort",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::parse_best_effort",
            "spans": [
              [
                725,
                32
              ]
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/predicate_indicator::crate/buffer/predicate_indicator",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::predicate_indicator",
            "spans": [
              [
                744,
                34
              ]
            ]
          },
          {
            "id": "metadata/import/rust/crate/buffer/word_at_position::crate/buffer/word_at_position",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports crate::buffer::word_at_position",
            "spans": [
              [
                765,
                31
              ]
            ]
          },
          {
            "id": "metadata/import/rust/super::super",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports super::*",
            "spans": [
              [
                2975,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                149,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                176,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "spans": [
              [
                4653,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                21,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                5311,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-cfg-test",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[cfg(test)] attribute",
            "spans": [
              [
                2942,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test-attr",
            "conf": 0.9,
            "crit": 2,
            "desc": "#[test] attribute",
            "spans": [
              [
                3114,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/harness/unit::rust-test",
            "conf": 0.95,
            "crit": 3,
            "desc": "Rust test marker or harness",
            "uses": [
              17,
              18
            ],
            "spans": [
              [
                2942,
                12
              ],
              [
                3114,
                11
              ]
            ]
          }
        ],
        "type": "rust"
      },
      {
        "ctx": [
          {
            "b": "fe1E\u003eltpsCA^n^szGG]AaAhmkzGE1kz/M$dAbof6u)aDVLPU6YwGTVPzFa92xjSh:wPz%9AV!h0z//]cz!]+lfcIDLze:r5zdNQbvruj4zxJLfAV/sfByO#oAb](kz!yWBnO@A.wO(0@BAnNjoKR*KBZX]]q!o#)wPzf3z*2YjayLQgfcIDSwPxw5qB@0wz!0{bwO#Pjv{@\u003eXwGUA0wft\u0026lvR/+1xK#lcAa9^dwI4FlA=k$vwnbE+zF%Prx\u003e8ip3nj4Q3nj4QavY{JBAIRnB2\u003eB=wQ5qtB9RUkas!NNvrcB2eOe%yz/M$hx\u003c\u003eT(z/Z2mv@\u003cgzv@Dj6yY",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "x(v(ic$WglB95Kmy*?EcwEp7zaS$DfvpQG{zxK4mwGUD8w[CQ{dj$@mB-RapB97}Ni+98Ay?m9#x(v)giYY/uB7!oRA61zHB7DFnByWA[B9RUkiYZe.oMaARi%(sqB7DFoz*b=kuU\u003c!5iY.1%z/fPmv(=UGwPJ0gBuo?LB7DFoz*b=kuU\u003c!5iY.7#A9)ZjAaK8KiX0h#B-RapBz(wmA:JT7A5{4blU{EFzGEALoKR*KBZX]]q!o#)wPxsAoMLeKwPz%dv}vhlq!o#)wPAhX3uZA3aARTjv}/*[iY.R4zF0/raA}mmzHBON3t\u003cY(ayYF9w[u0A3t\u003cY(ay/tbAbo9cx(v(J3t\u003cY(ay]4}x(mTbx(v(J3t\u003cY(ay]g{xkRTeBzklai%]?ywftM7C4CXQ3jnBtfcBhnvru66w]zYjvixS9zF9=%ay]z2B.}",
            "ln": 408,
            "col": 58,
            "line": 7
          },
          {
            "b": "arR^HarR^Hatd8uwm6B(wO@]zwn+$0D)0+yarR^HarR^HarR^HarR^Hwn+$0e[X:qd0oMAdgdguarR^HarR^HarR^HarR^HarSpNvq)Sxwn+$9ay/tbAbo9cx(v(Ii+98BAclnlc)\u0026Fyv\u003eInfzGGDcBsXLNz/YSmx(v(rdgdguarR^HarR^HarV7Y3i",
            "ln": 4120,
            "col": 4,
            "line": 119
          },
          {
            "b": "iYZ+?ze:StwHF)oz^$zfz/fVdzGEALAbP/iBzkVhefDoZA+M%K3lQDlarR^HaBLW/3lQDlaBKPB3jn1ZBz\u003e@ez-P{@vqfQcw]7[0z/M%-ar\u003errA=L-eByfc6A+eV\u0026a$l!8vrlZiv\u003c2x3az\u003eL3zyu}RDKp(rarSr\u003cayD=MC4CYnx(v(%atj\u003cBeMMmuaAhvnzGE1fzE:(3CXImxvR6d\u0026A+cw6y*?3{x(mMaB97@bzY\u0026UgAV/EqwEoL5arSr",
            "ln": 5218,
            "col": 43,
            "line": 148
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "std::sync::RwLock::new"
            ],
            [
              "",
              "std::collections::HashMap::new"
            ],
            [
              "",
              "diagnostics::compute"
            ],
            [
              "",
              "docs.insert"
            ],
            [
              "",
              "uri.clone"
            ],
            [
              "",
              "Ok"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "TextDocumentSyncCapability::Kind"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "CompletionOptions::default"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "HoverProviderCapability::Simple"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "OneOf::Left"
            ],
            [
              "",
              "Default::default"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "Ok"
            ],
            [
              "",
              "params.content_changes.into_iter.last"
            ],
            [
              "",
              "params.content_changes.into_iter"
            ],
            [
              "",
              "docs.remove"
            ],
            [
              "",
              "docs.get.map"
            ],
            [
              "",
              "docs.get"
            ],
            [
              "",
              "completion::compute"
            ],
            [
              "",
              "Ok"
            ],
            [
              "",
              "Some"
            ],
            [
              "",
              "CompletionResponse::Array"
            ],
            [
              "",
              "Ok"
            ],
            [
              "",
              "docs.get.and_then"
            ],
            [
              "",
              "docs.get"
            ],
            [
              "",
              "hover::compute"
            ],
            [
              "",
              "params.text_document_position_params.text_document.uri.clone"
            ],
            [
              "",
              "Ok"
            ],
            [
              "",
              "docs.get.and_then"
            ],
            [
              "",
              "docs.get"
            ],
            [
              "",
              "definition::compute"
            ],
            [
              "",
              "std::env::args.skip.any"
            ],
            [
              "",
              "std::env::args.skip"
            ],
            [
              "",
              "std::env::args"
            ],
            [
              "",
              "tracing_subscriber::fmt.with_writer.with_env_filter.init"
            ],
            [
              "",
              "tracing_subscriber::fmt.with_writer.with_env_filter"
            ],
            [
              "",
              "tracing_subscriber::fmt.with_writer"
            ],
            [
              "",
              "tracing_subscriber::fmt"
            ],
            [
              "",
              "tracing_subscriber::EnvFilter::try_from_default_env.unwrap_or_else"
            ],
            [
              "",
              "tracing_subscriber::EnvFilter::try_from_default_env"
            ],
            [
              "",
              "tracing_subscriber::EnvFilter::new"
            ],
            [
              "",
              "tokio::io::stdin"
            ],
            [
              "",
              "tokio::io::stdout"
            ],
            [
              "",
              "tower_lsp::LspService::new"
            ],
            [
              "",
              "tower_lsp::Server::new.serve"
            ],
            [
              "",
              "tower_lsp::Server::new"
            ],
            [
              "",
              "std::collections::HashMap"
            ],
            [
              "",
              "std::sync::RwLock"
            ],
            [
              "",
              "tower_lsp::jsonrpc::Result"
            ],
            [
              "",
              "tower_lsp::lsp_types::*"
            ],
            [
              "",
              "tower_lsp::Client"
            ],
            [
              "",
              "tower_lsp::LanguageServer"
            ],
            [
              "",
              "tower_lsp::LspService"
            ],
            [
              "",
              "tower_lsp::Server"
            ],
            [
              "",
              "tracing::info"
            ],
            [
              "",
              "tracing::warn"
            ]
          ],
          "mbr": [
            "Server::new.serve",
            "change.text",
            "doc.content",
            "docs.get",
            "docs.get.and_then",
            "docs.get.map",
            "docs.insert",
            "docs.remove",
            "params.content_changes",
            "params.content_changes.into_iter",
            "params.content_changes.into_iter.last",
            "params.text_document",
            "params.text_document.text",
            "params.text_document.uri",
            "params.text_document_position",
            "params.text_document_position.position",
            "params.text_document_position.text_document",
            "params.text_document_position.text_document.uri",
            "params.text_document_position_params",
            "params.text_document_position_params.position",
            "params.text_document_position_params.text_document",
            "params.text_document_position_params.text_document.uri",
            "params.text_document_position_params.text_document.uri.clone",
            "std::env::args.skip",
            "std::env::args.skip.any",
            "tracing_subscriber::EnvFilter::try_from_default_env.unwrap_or_else",
            "tracing_subscriber::fmt.with_writer",
            "tracing_subscriber::fmt.with_writer.with_env_filter",
            "tracing_subscriber::fmt.with_writer.with_env_filter.init",
            "uri.clone"
          ],
          "tgt": [
            "CompletionOptions::default",
            "CompletionResponse::Array",
            "Default::default",
            "HoverProviderCapability::Simple",
            "Ok",
            "OneOf::Left",
            "Some",
            "TextDocumentSyncCapability::Kind",
            "completion::compute",
            "definition::compute",
            "diagnostics::compute",
            "docs.get",
            "docs.get.and_then",
            "docs.get.map",
            "docs.insert",
            "docs.remove",
            "hover::compute",
            "params.content_changes.into_iter",
            "params.content_changes.into_iter.last",
            "params.text_document_position_params.text_document.uri.clone",
            "std::collections::HashMap::new",
            "std::env::args",
            "std::env::args.skip",
            "std::env::args.skip.any",
            "std::sync::RwLock::new",
            "tokio::io::stdin",
            "tokio::io::stdout",
            "tower_lsp::LspService::new",
            "tower_lsp::Server::new",
            "tower_lsp::Server::new.serve",
            "tracing_subscriber::EnvFilter::new",
            "tracing_subscriber::EnvFilter::try_from_default_env",
            "tracing_subscriber::EnvFilter::try_from_default_env.unwrap_or_else",
            "tracing_subscriber::fmt",
            "tracing_subscriber::fmt.with_writer",
            "tracing_subscriber::fmt.with_writer.with_env_filter",
            "tracing_subscriber::fmt.with_writer.with_env_filter.init",
            "uri.clone"
          ],
          "funcs": [
            [
              "new",
              980
            ],
            [
              "update_document",
              1310
            ],
            [
              "initialize",
              1805
            ],
            [
              "initialized",
              2808
            ],
            [
              "shutdown",
              2907
            ],
            [
              "did_open",
              2974
            ],
            [
              "did_change",
              3149
            ],
            [
              "did_close",
              3612
            ],
            [
              "completion",
              3804
            ],
            [
              "hover",
              4368
            ],
            [
              "goto_definition",
              4760
            ],
            [
              "main",
              5322
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 2,
              "op.lor": 1,
              "max_depth": 22,
              "call_count": 68,
              "node_count": 1567,
              "member_count": 30,
              "op_density.eq": 0,
              "op_density.lor": 0,
              "member_depth_max": 5
            },
            "file": {
              "size": 6271,
              "entropy": 4.68
            },
            "text": {
              "lines": 179,
              "top_char": 101,
              "max_ws_run": 1,
              "digit_ratio": 0,
              "space_count": 1490,
              "char_entropy": 4.68,
              "unique_chars": 76,
              "top_char_null": 0,
              "string_density": 0.06,
              "top_char_ratio": 0.07,
              "avg_line_length": 34.03,
              "max_line_length": 96,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.11,
              "last_line_length": 1,
              "whitespace_ratio": 0.27,
              "identifier_density": 1.73,
              "line_length_stddev": 26.48,
              "normalized_string_count": 0.82,
              "repeated_char_sequences": 44,
              "suspicious_identifier_ratio": 0.01,
              "normalized_unique_identifiers": 17.24
            },
            "binds": {
              "count": 10
            },
            "binary": {
              "peak_region_bytes": 5247,
              "peak_region_entropy": 4.91
            },
            "source": {
              "class_count": 2,
              "function_count": 12
            },
            "imports": {
              "count": 10,
              "wildcard": 1,
              "third_party_count": 10,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 130,
              "count": 11,
              "avg_length": 11.82,
              "max_length": 23,
              "avg_entropy": 2.78,
              "entropy_stddev": 0.87
            },
            "comments": {
              "chars": 1225,
              "count": 23,
              "lines": 23,
              "to_code_ratio": 0.15
            },
            "functions": {
              "count": 14,
              "density": 6.7,
              "avg_params": 1.75,
              "code_ratio": 0.7,
              "max_params": 3,
              "length_stddev": 7.05,
              "avg_name_length": 9,
              "no_params_count": 1,
              "avg_length_lines": 10.42,
              "max_length_lines": 26,
              "min_length_lines": 3,
              "single_char_params": 1,
              "avg_param_name_length": 5.24
            },
            "identifiers": {
              "count": 309,
              "unique": 129,
              "avg_length": 9.47,
              "max_length": 29,
              "min_length": 1,
              "avg_entropy": 2.62,
              "reuse_ratio": 0.42,
              "length_stddev": 6.33,
              "sequential_names": 1,
              "single_char_count": 1,
              "single_char_ratio": 0.01,
              "high_entropy_count": 15,
              "high_entropy_ratio": 0.12,
              "all_lowercase_ratio": 0.67,
              "all_uppercase_ratio": 0.01,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 10,
        "path": "patch-prolog-lsp-0.4.9.crate!!patch-prolog-lsp-0.4.9/src/main.rs",
        "pid": 0,
        "risk": 1,
        "sha": "d0c83be1f37bc9f89a9ea2f6e6c6b6ac158fc80e61b874df8a862276df441860",
        "size": 6271,
        "traits": [
          {
            "id": "metadata/import/rust/std/collections/hashmap::std/collections/hashmap",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::collections::HashMap",
            "spans": [
              [
                456,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/std/sync/rwlock::std/sync/rwlock",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports std::sync::RwLock",
            "spans": [
              [
                487,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/jsonrpc/result::tower_lsp/jsonrpc/result",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::jsonrpc::Result",
            "spans": [
              [
                511,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lsp_types::tower_lsp/lsp_types",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::lsp_types::*",
            "spans": [
              [
                543,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/client::tower_lsp/client",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::Client",
            "spans": [
              [
                584,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/languageserver::tower_lsp/languageserver",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::LanguageServer",
            "spans": [
              [
                592,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/lspservice::tower_lsp/lspservice",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::LspService",
            "spans": [
              [
                608,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tower_lsp/server::tower_lsp/server",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tower_lsp::Server",
            "spans": [
              [
                620,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tracing/info::tracing/info",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tracing::info",
            "spans": [
              [
                643,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/rust/tracing/warn::tracing/warn",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports tracing::warn",
            "spans": [
              [
                649,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                38,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                166,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                23,
                0
              ]
            ]
          },
          {
            "id": "micro-behaviors/os/event/loop::tokio-namespace",
            "conf": 0.5,
            "crit": 3,
            "desc": "References the Tokio async runtime namespace",
            "spans": [
              [
                5282,
                7
              ]
            ]
          }
        ],
        "type": "rust"
      },
      {
        "id": 11,
        "mol": "Md(Re)",
        "sha": "211080fce357081abc0a53256f6fb137690557346185a239cd7cec824fe53895",
        "path": "patch-prolog-lsp@0.4.9.registry.json",
        "risk": 1,
        "size": 867,
        "type": "registry",
        "depth": 1
      }
    ],
    "omitted_files": 1,
    "rev": "c1ea9",
    "v": "8"
  }
}