[INFO] fetching crate cosmolkit-search 0.5.1-rc.3...
[INFO] testing cosmolkit-search-0.5.1-rc.3 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate cosmolkit-search 0.5.1-rc.3 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate cosmolkit-search 0.5.1-rc.3
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate cosmolkit-search 0.5.1-rc.3
[INFO] tweaked toml for crates.io crate cosmolkit-search 0.5.1-rc.3 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate cosmolkit-search 0.5.1-rc.3 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate cosmolkit-search 0.5.1-rc.3 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533
[INFO] running `Command { std: "docker" "start" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling libc v0.2.190
[INFO] [stderr]    Compiling syn v3.0.9
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling hashify v0.3.1
[INFO] [stderr]    Compiling cosmolkit-ringdecomposer v0.5.1-rc.3
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling cosmolkit-types v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-model v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-core v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-cx v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-smiles v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-search v0.5.1-rc.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Hybridization`
[INFO] [stdout]   --> src/cx_lowering.rs:15:34
[INFO] [stdout]    |
[INFO] [stdout] 15 | use cosmolkit_types::{ChiralTag, Hybridization};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `QueryAtom` and `QueryBond`
[INFO] [stdout]   --> src/query_behavior.rs:39:68
[INFO] [stdout]    |
[INFO] [stdout] 39 | use cosmolkit_model::{AdjacencyList, Atom, AtomId, Bond, BondSpec, QueryAtom, QueryBond};
[INFO] [stdout]    |                                                                    ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cosmolkit_core::ValenceAssignment`
[INFO] [stdout]     --> src/query_behavior.rs:7944:9
[INFO] [stdout]      |
[INFO] [stdout] 7944 |     use cosmolkit_core::ValenceAssignment;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]     --> src/query_behavior.rs:7942:1
[INFO] [stdout]      |
[INFO] [stdout] 7942 | mod descriptor_hbd_context_tests {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdjacencyList`
[INFO] [stdout]  --> src/smarts_write.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     AdjacencyList, AtomId, AtomQueryPredicate, AtomRangeBounds, AtomRangeDataFunction, Bond,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BTreeSet`
[INFO] [stdout]   --> src/smarts_write.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::{BTreeMap, BTreeSet};
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]  --> src/query_cx_composition.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/smarts_parse.rs:299:13
[INFO] [stdout]     |
[INFO] [stdout] 299 |             mut atoms,
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/smarts_parse.rs:371:13
[INFO] [stdout]     |
[INFO] [stdout] 371 |         let mut graph = QueryGraph::from_parts(
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `d_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1233:4
[INFO] [stdout]      |
[INFO] [stdout] 1233 | fn d_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `t_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1256:4
[INFO] [stdout]      |
[INFO] [stdout] 1256 | fn t_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hplus_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1279:4
[INFO] [stdout]      |
[INFO] [stdout] 1279 | fn hplus_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pol_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1302:4
[INFO] [stdout]      |
[INFO] [stdout] 1302 | fn pol_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `r_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1333:4
[INFO] [stdout]      |
[INFO] [stdout] 1333 | fn r_atom_matcher(mol: &SearchTarget<'_>, atom: usize, ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `num_bonds` is never used
[INFO] [stdout]     --> src/matcher.rs:1081:19
[INFO] [stdout]      |
[INFO] [stdout] 1076 | impl Vf2Graph {
[INFO] [stdout]      | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1081 |     pub(crate) fn num_bonds(&self) -> usize {
[INFO] [stdout]      |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `num_bonds` is never used
[INFO] [stdout]     --> src/matcher.rs:1126:8
[INFO] [stdout]      |
[INFO] [stdout] 1100 | impl<'a> Vf2GraphRef<'a> {
[INFO] [stdout]      | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1126 |     fn num_bonds(self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `property_equal_as_strings` is never used
[INFO] [stdout]     --> src/matcher.rs:1181:4
[INFO] [stdout]      |
[INFO] [stdout] 1181 | fn property_equal_as_strings(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MatchVect` is never used
[INFO] [stdout]     --> src/matcher.rs:1304:6
[INFO] [stdout]      |
[INFO] [stdout] 1304 | type MatchVect = Vec<(i32, i32)>;
[INFO] [stdout]      |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insert_if_needed` is never used
[INFO] [stdout]     --> src/matcher.rs:1306:4
[INFO] [stdout]      |
[INFO] [stdout] 1306 | fn insert_if_needed(matches: &mut BTreeSet<MatchVect>, candidate: MatchVect) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_to_insert` is never used
[INFO] [stdout]     --> src/matcher.rs:1364:4
[INFO] [stdout]      |
[INFO] [stdout] 1364 | fn try_to_insert(
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clone_state`, `clone`, `debug_order`, `core_len`, and `match_one` are never used
[INFO] [stdout]     --> src/matcher.rs:2104:8
[INFO] [stdout]      |
[INFO] [stdout] 2023 | impl<'a> Vf2SubState<'a> {
[INFO] [stdout]      | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2104 |     fn clone_state(&self) -> Self {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2151 |     fn clone(&self) -> Self {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2159 |     fn debug_order(&self) -> Option<&[NodeId]> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2190 |     fn core_len(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2915 |     fn match_one(
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vf2_match` is never used
[INFO] [stdout]     --> src/matcher.rs:3107:4
[INFO] [stdout]      |
[INFO] [stdout] 3107 | fn vf2_match(
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vf2_entry_one` is never used
[INFO] [stdout]     --> src/matcher.rs:3252:4
[INFO] [stdout]      |
[INFO] [stdout] 3252 | fn vf2_entry_one(
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vf2_entry_all` is never used
[INFO] [stdout]     --> src/matcher.rs:3331:4
[INFO] [stdout]      |
[INFO] [stdout] 3331 | fn vf2_entry_all(
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chiral_atom_compat` is never used
[INFO] [stdout]     --> src/matcher.rs:5162:4
[INFO] [stdout]      |
[INFO] [stdout] 5162 | fn chiral_atom_compat(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_duplicates` is never used
[INFO] [stdout]     --> src/matcher.rs:5463:4
[INFO] [stdout]      |
[INFO] [stdout] 5463 | fn remove_duplicates(matches: &mut Vec<SubstructMatchResult>, atom_count: usize) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_contains_atomic_number` is never used
[INFO] [stdout]     --> src/matcher.rs:5517:4
[INFO] [stdout]      |
[INFO] [stdout] 5517 | fn query_contains_atomic_number(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_terminal_r_group_or_query_hydrogen` is never used
[INFO] [stdout]     --> src/matcher.rs:5535:15
[INFO] [stdout]      |
[INFO] [stdout] 5535 | pub(crate) fn is_atom_terminal_r_group_or_query_hydrogen(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `core_substitution_score` is never used
[INFO] [stdout]     --> src/matcher.rs:5572:4
[INFO] [stdout]      |
[INFO] [stdout] 5572 | fn core_substitution_score(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_most_substituted_core_match` is never used
[INFO] [stdout]     --> src/matcher.rs:5669:4
[INFO] [stdout]      |
[INFO] [stdout] 5669 | fn get_most_substituted_core_match<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort_matches_by_degree_of_core_substitution` is never used
[INFO] [stdout]     --> src/matcher.rs:6318:4
[INFO] [stdout]      |
[INFO] [stdout] 6318 | fn sort_matches_by_degree_of_core_substitution(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `core_substitution_denominator` is never used
[INFO] [stdout]      --> src/matcher.rs:11512:4
[INFO] [stdout]       |
[INFO] [stdout] 11512 | fn core_substitution_denominator(atom_count: usize) -> f64 {
[INFO] [stdout]       |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_atom_stereo_and_distance` is never used
[INFO] [stdout]    --> src/mcs/mod.rs:335:4
[INFO] [stdout]     |
[INFO] [stdout] 335 | fn check_atom_stereo_and_distance(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `source_equal` is never used
[INFO] [stdout]     --> src/mcs/mod.rs:3557:8
[INFO] [stdout]      |
[INFO] [stdout] 3534 | impl McsDuplicateSeedKey {
[INFO] [stdout]      | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 3557 |     fn source_equal(&self, right: &Self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_initial_match_tables` is never used
[INFO] [stdout]     --> src/mcs/mod.rs:6248:4
[INFO] [stdout]      |
[INFO] [stdout] 6248 | fn build_initial_match_tables(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Xor` is never constructed
[INFO] [stdout]    --> src/query_behavior.rs:746:5
[INFO] [stdout]     |
[INFO] [stdout] 743 | pub(crate) enum CompositeQueryType {
[INFO] [stdout]     |                 ------------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 746 |     Xor,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CompositeQueryType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RangeQueryType` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1049:6
[INFO] [stdout]      |
[INFO] [stdout] 1049 | enum RangeQueryType {
[INFO] [stdout]      |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `QueryFinalizationError` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1057:6
[INFO] [stdout]      |
[INFO] [stdout] 1057 | enum QueryFinalizationError {
[INFO] [stdout]      |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_atom_ring_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1064:4
[INFO] [stdout]      |
[INFO] [stdout] 1064 | fn finalize_atom_ring_size_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_atom_query_from_description` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1142:4
[INFO] [stdout]      |
[INFO] [stdout] 1142 | fn finalize_atom_query_from_description(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_has_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1247:4
[INFO] [stdout]      |
[INFO] [stdout] 1247 | fn make_atom_has_prop_query(property: impl Into<String>) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1258:4
[INFO] [stdout]      |
[INFO] [stdout] 1258 | fn make_atom_prop_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_list_query_helper` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1617:4
[INFO] [stdout]      |
[INFO] [stdout] 1617 | fn atom_list_query_helper(query: &QueryNode<AtomQueryPredicate>, ignore_negation: bool) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_list_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1659:4
[INFO] [stdout]      |
[INFO] [stdout] 1659 | fn is_atom_list_query(atom: &Atom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_list_query_values` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1698:4
[INFO] [stdout]      |
[INFO] [stdout] 1698 | fn get_atom_list_query_values(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_type_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2006:4
[INFO] [stdout]      |
[INFO] [stdout] 2006 | fn make_atom_type_query(num: u8, aromatic: bool) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_implicit_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2036:4
[INFO] [stdout]      |
[INFO] [stdout] 2036 | fn make_atom_implicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_explicit_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2058:4
[INFO] [stdout]      |
[INFO] [stdout] 2058 | fn make_atom_explicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_total_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2080:4
[INFO] [stdout]      |
[INFO] [stdout] 2080 | fn make_atom_total_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_heavy_atom_degree_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2149:4
[INFO] [stdout]      |
[INFO] [stdout] 2149 | fn make_atom_heavy_atom_degree_query(what: u32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_unsaturated_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2284:4
[INFO] [stdout]      |
[INFO] [stdout] 2284 | fn make_atom_unsaturated_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_in_n_rings_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2319:4
[INFO] [stdout]      |
[INFO] [stdout] 2319 | fn make_atom_in_n_rings_query(what: u8) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_in_ring_of_size_range_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2374:4
[INFO] [stdout]      |
[INFO] [stdout] 2374 | fn make_atom_in_ring_of_size_range_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replace_atom_with_query_atom` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2604:15
[INFO] [stdout]      |
[INFO] [stdout] 2604 | pub(crate) fn replace_atom_with_query_atom(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_is_bridgehead_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2863:4
[INFO] [stdout]      |
[INFO] [stdout] 2863 | fn make_atom_is_bridgehead_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_negative_formal_charge_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3265:4
[INFO] [stdout]      |
[INFO] [stdout] 3265 | fn make_atom_negative_formal_charge_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_has_chiral_tag_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3335:4
[INFO] [stdout]      |
[INFO] [stdout] 3335 | fn make_atom_has_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_missing_chiral_tag_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3354:4
[INFO] [stdout]      |
[INFO] [stdout] 3354 | fn make_atom_missing_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_has_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3389:4
[INFO] [stdout]      |
[INFO] [stdout] 3389 | fn make_bond_has_prop_query(property: impl Into<String>) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3400:4
[INFO] [stdout]      |
[INFO] [stdout] 3400 | fn make_bond_prop_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_bond_query_from_description` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3419:4
[INFO] [stdout]      |
[INFO] [stdout] 3419 | fn finalize_bond_query_from_description(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_dir_equals_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3469:4
[INFO] [stdout]      |
[INFO] [stdout] 3469 | fn make_bond_dir_equals_query(what: crate::BondDirection) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_has_stereo_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3487:4
[INFO] [stdout]      |
[INFO] [stdout] 3487 | fn make_bond_has_stereo_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_in_n_rings_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3524:4
[INFO] [stdout]      |
[INFO] [stdout] 3524 | fn make_bond_in_n_rings_query(what: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_in_ring_of_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3542:4
[INFO] [stdout]      |
[INFO] [stdout] 3542 | fn make_bond_in_ring_of_size_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_min_ring_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3624:4
[INFO] [stdout]      |
[INFO] [stdout] 3624 | fn make_bond_min_ring_size_query(target: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_query_bond_spec` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3667:4
[INFO] [stdout]      |
[INFO] [stdout] 3667 | fn make_query_bond_spec(begin: AtomId, end: AtomId, order: BondOrder) -> crate::QueryBond {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_double_or_aromatic_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3785:4
[INFO] [stdout]      |
[INFO] [stdout] 3785 | fn make_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_single_or_double_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3807:4
[INFO] [stdout]      |
[INFO] [stdout] 3807 | fn make_single_or_double_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_single_or_double_or_aromatic_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3829:4
[INFO] [stdout]      |
[INFO] [stdout] 3829 | fn make_single_or_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_query_match_context_from_blocks` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3956:15
[INFO] [stdout]      |
[INFO] [stdout] 3956 | pub(crate) fn build_query_match_context_from_blocks<'a>(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_predicate_matches_from_blocks` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3971:15
[INFO] [stdout]      |
[INFO] [stdout] 3971 | pub(crate) fn atom_predicate_matches_from_blocks(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_data` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4325:4
[INFO] [stdout]      |
[INFO] [stdout] 4325 | fn null_data<T>(_value: T) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4338:4
[INFO] [stdout]      |
[INFO] [stdout] 4338 | fn null_query<T>(_value: T) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_dummy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4351:4
[INFO] [stdout]      |
[INFO] [stdout] 4351 | fn is_atom_dummy(atom: &crate::QueryAtom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_metal` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4374:4
[INFO] [stdout]      |
[INFO] [stdout] 4374 | fn is_metal(atom: &Atom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_num` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4481:4
[INFO] [stdout]      |
[INFO] [stdout] 4481 | fn query_atom_num(at: &Atom) -> u8 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_type_is_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4524:4
[INFO] [stdout]      |
[INFO] [stdout] 4524 | fn get_atom_type_is_aromatic(val: i32) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_type_atomic_num` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4535:4
[INFO] [stdout]      |
[INFO] [stdout] 4535 | fn get_atom_type_atomic_num(val: i32) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rdkit_bond_type_prime` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5131:10
[INFO] [stdout]      |
[INFO] [stdout] 5131 | const fn rdkit_bond_type_prime(order: BondOrder) -> u32 {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_bond_product` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5191:4
[INFO] [stdout]      |
[INFO] [stdout] 5191 | fn query_atom_bond_product(at: &Atom, adj: &AdjacencyList, mol: &impl SearchTargetAccess) -> u32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_all_bond_product` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5218:4
[INFO] [stdout]      |
[INFO] [stdout] 5218 | fn query_atom_all_bond_product(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5678:4
[INFO] [stdout]      |
[INFO] [stdout] 5678 | fn query_bond_is_single_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_double_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5692:4
[INFO] [stdout]      |
[INFO] [stdout] 5692 | fn query_bond_is_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_double` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5706:4
[INFO] [stdout]      |
[INFO] [stdout] 5706 | fn query_bond_is_single_or_double(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_double_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5720:4
[INFO] [stdout]      |
[INFO] [stdout] 5720 | fn query_bond_is_single_or_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `greater_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5976:4
[INFO] [stdout]      |
[INFO] [stdout] 5976 | fn greater_query_match<T>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `less_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6034:4
[INFO] [stdout]      |
[INFO] [stdout] 6034 | fn less_query_match<T>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6147:4
[INFO] [stdout]      |
[INFO] [stdout] 6147 | fn set_query_match<T, U: Ord>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_copy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6166:4
[INFO] [stdout]      |
[INFO] [stdout] 6166 | fn query_atom_copy(atom: &crate::QueryAtom) -> crate::QueryAtom {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_copy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6179:4
[INFO] [stdout]      |
[INFO] [stdout] 6179 | fn query_bond_copy(bond: &crate::QueryBond) -> crate::QueryBond {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_set_type` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6192:4
[INFO] [stdout]      |
[INFO] [stdout] 6192 | fn query_bond_set_type(bond: &mut crate::QueryBond, bond_type: BondOrder) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_set_dir` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6210:4
[INFO] [stdout]      |
[INFO] [stdout] 6210 | fn query_bond_set_dir(bond: &mut crate::QueryBond, direction: crate::BondDirection) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chain` is never used
[INFO] [stdout]     --> src/query_behavior.rs:7948:8
[INFO] [stdout]      |
[INFO] [stdout] 7948 |     fn chain(elements: &[Element]) -> TopologyBlock {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `num_atoms`, `atom_query`, and `bond_query` are never used
[INFO] [stdout]    --> src/smarts_parse.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl QueryGraphBuilder {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout]  90 |     #[must_use]
[INFO] [stdout]  91 |     pub fn num_atoms(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn atom_query(&self, idx: usize) -> Option<&QueryNode<AtomQueryPredicate>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn bond_query(&self, idx: usize) -> Option<&QueryNode<BondQueryPredicate>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_smarts_graph` is never used
[INFO] [stdout]    --> src/smarts_parse.rs:535:4
[INFO] [stdout]     |
[INFO] [stdout] 535 | fn parse_smarts_graph(smarts: impl AsRef<[u8]>) -> Result<QueryGraphBuilder, SmartsParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_smarts_with_params` is never used
[INFO] [stdout]    --> src/smarts_parse.rs:545:4
[INFO] [stdout]     |
[INFO] [stdout] 545 | fn parse_smarts_with_params(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_atom_entry` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2190:4
[INFO] [stdout]      |
[INFO] [stdout] 2190 | fn parse_atom_entry(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bond_entry` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2211:4
[INFO] [stdout]      |
[INFO] [stdout] 2211 | fn parse_bond_entry(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smarts_bond_parse` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2233:4
[INFO] [stdout]      |
[INFO] [stdout] 2233 | fn smarts_bond_parse(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smarts_atom_parse` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2249:4
[INFO] [stdout]      |
[INFO] [stdout] 2249 | fn smarts_atom_parse(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_atom` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2265:4
[INFO] [stdout]      |
[INFO] [stdout] 2265 | fn to_atom(
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_from_smarts` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2301:4
[INFO] [stdout]      |
[INFO] [stdout] 2301 | fn atom_from_smarts(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_bond` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2319:4
[INFO] [stdout]      |
[INFO] [stdout] 2319 | fn to_bond(
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bond_from_smarts` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2355:4
[INFO] [stdout]      |
[INFO] [stdout] 2355 | fn bond_from_smarts(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_query_hs` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3525:4
[INFO] [stdout]      |
[INFO] [stdout] 3525 | fn merge_query_hs(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_node_h_status` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3548:4
[INFO] [stdout]      |
[INFO] [stdout] 3548 | fn query_node_h_status(query: &QueryNode<AtomQueryPredicate>) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_query_hs` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3570:4
[INFO] [stdout]      |
[INFO] [stdout] 3570 | fn has_query_hs(molecule: &QueryGraph) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_query_hs_graph` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3630:4
[INFO] [stdout]      |
[INFO] [stdout] 3630 | fn has_query_hs_graph(graph: &QueryGraph) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Atom` and `Bond` are never constructed
[INFO] [stdout]     --> src/smarts_parse.rs:3829:5
[INFO] [stdout]      |
[INFO] [stdout] 3827 | enum ScannerStart {
[INFO] [stdout]      |      ------------ variants in this enum
[INFO] [stdout] 3828 |     Molecule,
[INFO] [stdout] 3829 |     Atom,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 3830 |     Bond,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ScannerStart` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `source_error_position` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:5623:8
[INFO] [stdout]      |
[INFO] [stdout] 5585 | impl<'a> SmartsParser<'a> {
[INFO] [stdout]      | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 5623 |     fn source_error_position(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_atom_positions` is never used
[INFO] [stdout]    --> src/smarts_write.rs:526:4
[INFO] [stdout]     |
[INFO] [stdout] 526 | fn query_cx_atom_positions(atom_order: &[AtomId], atom_count: usize) -> Vec<Option<usize>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_source_reverse_atom_order` is never used
[INFO] [stdout]    --> src/smarts_write.rs:535:4
[INFO] [stdout]     |
[INFO] [stdout] 535 | fn query_cx_source_reverse_atom_order(atom_order: &[AtomId], atom_count: usize) -> Vec<usize> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quote_query_cx_atom_property` is never used
[INFO] [stdout]    --> src/smarts_write.rs:840:4
[INFO] [stdout]     |
[INFO] [stdout] 840 | fn quote_query_cx_atom_property(text: &[u8]) -> PropertyText {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_other_atom` is never used
[INFO] [stdout]     --> src/smarts_write.rs:1626:4
[INFO] [stdout]      |
[INFO] [stdout] 1626 | fn query_cx_other_atom(bond: &Bond, atom: AtomId) -> Option<AtomId> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `describe_query` is never used
[INFO] [stdout]     --> src/smarts_write.rs:3414:4
[INFO] [stdout]      |
[INFO] [stdout] 3414 | fn describe_query<T>(query: &QueryNode<T>, leader: String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recurse_get_smarts` is never used
[INFO] [stdout]     --> src/smarts_write.rs:4270:4
[INFO] [stdout]      |
[INFO] [stdout] 4270 | fn recurse_get_smarts<F>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 22s
[INFO] running `Command { std: "docker" "inspect" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling cosmolkit-model v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-core v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-cx v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-smiles v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-search v0.5.1-rc.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Hybridization`
[INFO] [stdout]   --> src/cx_lowering.rs:15:34
[INFO] [stdout]    |
[INFO] [stdout] 15 | use cosmolkit_types::{ChiralTag, Hybridization};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `QueryAtom` and `QueryBond`
[INFO] [stdout]   --> src/query_behavior.rs:39:68
[INFO] [stdout]    |
[INFO] [stdout] 39 | use cosmolkit_model::{AdjacencyList, Atom, AtomId, Bond, BondSpec, QueryAtom, QueryBond};
[INFO] [stdout]    |                                                                    ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cosmolkit_core::ValenceAssignment`
[INFO] [stdout]     --> src/query_behavior.rs:7944:9
[INFO] [stdout]      |
[INFO] [stdout] 7944 |     use cosmolkit_core::ValenceAssignment;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]     --> src/query_behavior.rs:7942:1
[INFO] [stdout]      |
[INFO] [stdout] 7942 | mod descriptor_hbd_context_tests {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdjacencyList`
[INFO] [stdout]  --> src/smarts_write.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     AdjacencyList, AtomId, AtomQueryPredicate, AtomRangeBounds, AtomRangeDataFunction, Bond,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BTreeSet`
[INFO] [stdout]   --> src/smarts_write.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::{BTreeMap, BTreeSet};
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]  --> src/query_cx_composition.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/smarts_parse.rs:299:13
[INFO] [stdout]     |
[INFO] [stdout] 299 |             mut atoms,
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/smarts_parse.rs:371:13
[INFO] [stdout]     |
[INFO] [stdout] 371 |         let mut graph = QueryGraph::from_parts(
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `d_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1233:4
[INFO] [stdout]      |
[INFO] [stdout] 1233 | fn d_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `t_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1256:4
[INFO] [stdout]      |
[INFO] [stdout] 1256 | fn t_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hplus_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1279:4
[INFO] [stdout]      |
[INFO] [stdout] 1279 | fn hplus_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pol_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1302:4
[INFO] [stdout]      |
[INFO] [stdout] 1302 | fn pol_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `r_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1333:4
[INFO] [stdout]      |
[INFO] [stdout] 1333 | fn r_atom_matcher(mol: &SearchTarget<'_>, atom: usize, ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `num_bonds` is never used
[INFO] [stdout]     --> src/matcher.rs:1081:19
[INFO] [stdout]      |
[INFO] [stdout] 1076 | impl Vf2Graph {
[INFO] [stdout]      | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1081 |     pub(crate) fn num_bonds(&self) -> usize {
[INFO] [stdout]      |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `num_bonds` is never used
[INFO] [stdout]     --> src/matcher.rs:1126:8
[INFO] [stdout]      |
[INFO] [stdout] 1100 | impl<'a> Vf2GraphRef<'a> {
[INFO] [stdout]      | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1126 |     fn num_bonds(self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `property_equal_as_strings` is never used
[INFO] [stdout]     --> src/matcher.rs:1181:4
[INFO] [stdout]      |
[INFO] [stdout] 1181 | fn property_equal_as_strings(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MatchVect` is never used
[INFO] [stdout]     --> src/matcher.rs:1304:6
[INFO] [stdout]      |
[INFO] [stdout] 1304 | type MatchVect = Vec<(i32, i32)>;
[INFO] [stdout]      |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insert_if_needed` is never used
[INFO] [stdout]     --> src/matcher.rs:1306:4
[INFO] [stdout]      |
[INFO] [stdout] 1306 | fn insert_if_needed(matches: &mut BTreeSet<MatchVect>, candidate: MatchVect) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_to_insert` is never used
[INFO] [stdout]     --> src/matcher.rs:1364:4
[INFO] [stdout]      |
[INFO] [stdout] 1364 | fn try_to_insert(
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clone_state`, `clone`, `debug_order`, `core_len`, and `match_one` are never used
[INFO] [stdout]     --> src/matcher.rs:2104:8
[INFO] [stdout]      |
[INFO] [stdout] 2023 | impl<'a> Vf2SubState<'a> {
[INFO] [stdout]      | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2104 |     fn clone_state(&self) -> Self {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2151 |     fn clone(&self) -> Self {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2159 |     fn debug_order(&self) -> Option<&[NodeId]> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2190 |     fn core_len(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2915 |     fn match_one(
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vf2_match` is never used
[INFO] [stdout]     --> src/matcher.rs:3107:4
[INFO] [stdout]      |
[INFO] [stdout] 3107 | fn vf2_match(
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vf2_entry_one` is never used
[INFO] [stdout]     --> src/matcher.rs:3252:4
[INFO] [stdout]      |
[INFO] [stdout] 3252 | fn vf2_entry_one(
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vf2_entry_all` is never used
[INFO] [stdout]     --> src/matcher.rs:3331:4
[INFO] [stdout]      |
[INFO] [stdout] 3331 | fn vf2_entry_all(
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chiral_atom_compat` is never used
[INFO] [stdout]     --> src/matcher.rs:5162:4
[INFO] [stdout]      |
[INFO] [stdout] 5162 | fn chiral_atom_compat(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_duplicates` is never used
[INFO] [stdout]     --> src/matcher.rs:5463:4
[INFO] [stdout]      |
[INFO] [stdout] 5463 | fn remove_duplicates(matches: &mut Vec<SubstructMatchResult>, atom_count: usize) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_contains_atomic_number` is never used
[INFO] [stdout]     --> src/matcher.rs:5517:4
[INFO] [stdout]      |
[INFO] [stdout] 5517 | fn query_contains_atomic_number(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_terminal_r_group_or_query_hydrogen` is never used
[INFO] [stdout]     --> src/matcher.rs:5535:15
[INFO] [stdout]      |
[INFO] [stdout] 5535 | pub(crate) fn is_atom_terminal_r_group_or_query_hydrogen(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `core_substitution_score` is never used
[INFO] [stdout]     --> src/matcher.rs:5572:4
[INFO] [stdout]      |
[INFO] [stdout] 5572 | fn core_substitution_score(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_most_substituted_core_match` is never used
[INFO] [stdout]     --> src/matcher.rs:5669:4
[INFO] [stdout]      |
[INFO] [stdout] 5669 | fn get_most_substituted_core_match<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort_matches_by_degree_of_core_substitution` is never used
[INFO] [stdout]     --> src/matcher.rs:6318:4
[INFO] [stdout]      |
[INFO] [stdout] 6318 | fn sort_matches_by_degree_of_core_substitution(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `core_substitution_denominator` is never used
[INFO] [stdout]      --> src/matcher.rs:11512:4
[INFO] [stdout]       |
[INFO] [stdout] 11512 | fn core_substitution_denominator(atom_count: usize) -> f64 {
[INFO] [stdout]       |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_atom_stereo_and_distance` is never used
[INFO] [stdout]    --> src/mcs/mod.rs:335:4
[INFO] [stdout]     |
[INFO] [stdout] 335 | fn check_atom_stereo_and_distance(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `source_equal` is never used
[INFO] [stdout]     --> src/mcs/mod.rs:3557:8
[INFO] [stdout]      |
[INFO] [stdout] 3534 | impl McsDuplicateSeedKey {
[INFO] [stdout]      | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 3557 |     fn source_equal(&self, right: &Self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_initial_match_tables` is never used
[INFO] [stdout]     --> src/mcs/mod.rs:6248:4
[INFO] [stdout]      |
[INFO] [stdout] 6248 | fn build_initial_match_tables(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Xor` is never constructed
[INFO] [stdout]    --> src/query_behavior.rs:746:5
[INFO] [stdout]     |
[INFO] [stdout] 743 | pub(crate) enum CompositeQueryType {
[INFO] [stdout]     |                 ------------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 746 |     Xor,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CompositeQueryType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RangeQueryType` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1049:6
[INFO] [stdout]      |
[INFO] [stdout] 1049 | enum RangeQueryType {
[INFO] [stdout]      |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `QueryFinalizationError` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1057:6
[INFO] [stdout]      |
[INFO] [stdout] 1057 | enum QueryFinalizationError {
[INFO] [stdout]      |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_atom_ring_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1064:4
[INFO] [stdout]      |
[INFO] [stdout] 1064 | fn finalize_atom_ring_size_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_atom_query_from_description` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1142:4
[INFO] [stdout]      |
[INFO] [stdout] 1142 | fn finalize_atom_query_from_description(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_has_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1247:4
[INFO] [stdout]      |
[INFO] [stdout] 1247 | fn make_atom_has_prop_query(property: impl Into<String>) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1258:4
[INFO] [stdout]      |
[INFO] [stdout] 1258 | fn make_atom_prop_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_list_query_helper` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1617:4
[INFO] [stdout]      |
[INFO] [stdout] 1617 | fn atom_list_query_helper(query: &QueryNode<AtomQueryPredicate>, ignore_negation: bool) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_list_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1659:4
[INFO] [stdout]      |
[INFO] [stdout] 1659 | fn is_atom_list_query(atom: &Atom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_list_query_values` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1698:4
[INFO] [stdout]      |
[INFO] [stdout] 1698 | fn get_atom_list_query_values(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_type_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2006:4
[INFO] [stdout]      |
[INFO] [stdout] 2006 | fn make_atom_type_query(num: u8, aromatic: bool) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_implicit_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2036:4
[INFO] [stdout]      |
[INFO] [stdout] 2036 | fn make_atom_implicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_explicit_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2058:4
[INFO] [stdout]      |
[INFO] [stdout] 2058 | fn make_atom_explicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_total_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2080:4
[INFO] [stdout]      |
[INFO] [stdout] 2080 | fn make_atom_total_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_heavy_atom_degree_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2149:4
[INFO] [stdout]      |
[INFO] [stdout] 2149 | fn make_atom_heavy_atom_degree_query(what: u32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_unsaturated_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2284:4
[INFO] [stdout]      |
[INFO] [stdout] 2284 | fn make_atom_unsaturated_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_in_n_rings_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2319:4
[INFO] [stdout]      |
[INFO] [stdout] 2319 | fn make_atom_in_n_rings_query(what: u8) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_in_ring_of_size_range_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2374:4
[INFO] [stdout]      |
[INFO] [stdout] 2374 | fn make_atom_in_ring_of_size_range_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replace_atom_with_query_atom` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2604:15
[INFO] [stdout]      |
[INFO] [stdout] 2604 | pub(crate) fn replace_atom_with_query_atom(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_is_bridgehead_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2863:4
[INFO] [stdout]      |
[INFO] [stdout] 2863 | fn make_atom_is_bridgehead_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_negative_formal_charge_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3265:4
[INFO] [stdout]      |
[INFO] [stdout] 3265 | fn make_atom_negative_formal_charge_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_has_chiral_tag_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3335:4
[INFO] [stdout]      |
[INFO] [stdout] 3335 | fn make_atom_has_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_missing_chiral_tag_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3354:4
[INFO] [stdout]      |
[INFO] [stdout] 3354 | fn make_atom_missing_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_has_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3389:4
[INFO] [stdout]      |
[INFO] [stdout] 3389 | fn make_bond_has_prop_query(property: impl Into<String>) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3400:4
[INFO] [stdout]      |
[INFO] [stdout] 3400 | fn make_bond_prop_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_bond_query_from_description` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3419:4
[INFO] [stdout]      |
[INFO] [stdout] 3419 | fn finalize_bond_query_from_description(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_dir_equals_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3469:4
[INFO] [stdout]      |
[INFO] [stdout] 3469 | fn make_bond_dir_equals_query(what: crate::BondDirection) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_has_stereo_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3487:4
[INFO] [stdout]      |
[INFO] [stdout] 3487 | fn make_bond_has_stereo_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_in_n_rings_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3524:4
[INFO] [stdout]      |
[INFO] [stdout] 3524 | fn make_bond_in_n_rings_query(what: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_in_ring_of_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3542:4
[INFO] [stdout]      |
[INFO] [stdout] 3542 | fn make_bond_in_ring_of_size_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_min_ring_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3624:4
[INFO] [stdout]      |
[INFO] [stdout] 3624 | fn make_bond_min_ring_size_query(target: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_query_bond_spec` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3667:4
[INFO] [stdout]      |
[INFO] [stdout] 3667 | fn make_query_bond_spec(begin: AtomId, end: AtomId, order: BondOrder) -> crate::QueryBond {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_double_or_aromatic_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3785:4
[INFO] [stdout]      |
[INFO] [stdout] 3785 | fn make_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_single_or_double_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3807:4
[INFO] [stdout]      |
[INFO] [stdout] 3807 | fn make_single_or_double_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_single_or_double_or_aromatic_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3829:4
[INFO] [stdout]      |
[INFO] [stdout] 3829 | fn make_single_or_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_query_match_context_from_blocks` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3956:15
[INFO] [stdout]      |
[INFO] [stdout] 3956 | pub(crate) fn build_query_match_context_from_blocks<'a>(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_predicate_matches_from_blocks` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3971:15
[INFO] [stdout]      |
[INFO] [stdout] 3971 | pub(crate) fn atom_predicate_matches_from_blocks(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_data` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4325:4
[INFO] [stdout]      |
[INFO] [stdout] 4325 | fn null_data<T>(_value: T) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4338:4
[INFO] [stdout]      |
[INFO] [stdout] 4338 | fn null_query<T>(_value: T) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_dummy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4351:4
[INFO] [stdout]      |
[INFO] [stdout] 4351 | fn is_atom_dummy(atom: &crate::QueryAtom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_metal` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4374:4
[INFO] [stdout]      |
[INFO] [stdout] 4374 | fn is_metal(atom: &Atom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_num` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4481:4
[INFO] [stdout]      |
[INFO] [stdout] 4481 | fn query_atom_num(at: &Atom) -> u8 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_type_is_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4524:4
[INFO] [stdout]      |
[INFO] [stdout] 4524 | fn get_atom_type_is_aromatic(val: i32) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_type_atomic_num` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4535:4
[INFO] [stdout]      |
[INFO] [stdout] 4535 | fn get_atom_type_atomic_num(val: i32) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rdkit_bond_type_prime` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5131:10
[INFO] [stdout]      |
[INFO] [stdout] 5131 | const fn rdkit_bond_type_prime(order: BondOrder) -> u32 {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_bond_product` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5191:4
[INFO] [stdout]      |
[INFO] [stdout] 5191 | fn query_atom_bond_product(at: &Atom, adj: &AdjacencyList, mol: &impl SearchTargetAccess) -> u32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_all_bond_product` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5218:4
[INFO] [stdout]      |
[INFO] [stdout] 5218 | fn query_atom_all_bond_product(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5678:4
[INFO] [stdout]      |
[INFO] [stdout] 5678 | fn query_bond_is_single_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_double_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5692:4
[INFO] [stdout]      |
[INFO] [stdout] 5692 | fn query_bond_is_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_double` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5706:4
[INFO] [stdout]      |
[INFO] [stdout] 5706 | fn query_bond_is_single_or_double(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_double_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5720:4
[INFO] [stdout]      |
[INFO] [stdout] 5720 | fn query_bond_is_single_or_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `greater_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5976:4
[INFO] [stdout]      |
[INFO] [stdout] 5976 | fn greater_query_match<T>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `less_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6034:4
[INFO] [stdout]      |
[INFO] [stdout] 6034 | fn less_query_match<T>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6147:4
[INFO] [stdout]      |
[INFO] [stdout] 6147 | fn set_query_match<T, U: Ord>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_copy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6166:4
[INFO] [stdout]      |
[INFO] [stdout] 6166 | fn query_atom_copy(atom: &crate::QueryAtom) -> crate::QueryAtom {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_copy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6179:4
[INFO] [stdout]      |
[INFO] [stdout] 6179 | fn query_bond_copy(bond: &crate::QueryBond) -> crate::QueryBond {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_set_type` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6192:4
[INFO] [stdout]      |
[INFO] [stdout] 6192 | fn query_bond_set_type(bond: &mut crate::QueryBond, bond_type: BondOrder) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_set_dir` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6210:4
[INFO] [stdout]      |
[INFO] [stdout] 6210 | fn query_bond_set_dir(bond: &mut crate::QueryBond, direction: crate::BondDirection) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chain` is never used
[INFO] [stdout]     --> src/query_behavior.rs:7948:8
[INFO] [stdout]      |
[INFO] [stdout] 7948 |     fn chain(elements: &[Element]) -> TopologyBlock {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `num_atoms`, `atom_query`, and `bond_query` are never used
[INFO] [stdout]    --> src/smarts_parse.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl QueryGraphBuilder {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout]  90 |     #[must_use]
[INFO] [stdout]  91 |     pub fn num_atoms(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn atom_query(&self, idx: usize) -> Option<&QueryNode<AtomQueryPredicate>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn bond_query(&self, idx: usize) -> Option<&QueryNode<BondQueryPredicate>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_smarts_graph` is never used
[INFO] [stdout]    --> src/smarts_parse.rs:535:4
[INFO] [stdout]     |
[INFO] [stdout] 535 | fn parse_smarts_graph(smarts: impl AsRef<[u8]>) -> Result<QueryGraphBuilder, SmartsParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_smarts_with_params` is never used
[INFO] [stdout]    --> src/smarts_parse.rs:545:4
[INFO] [stdout]     |
[INFO] [stdout] 545 | fn parse_smarts_with_params(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_atom_entry` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2190:4
[INFO] [stdout]      |
[INFO] [stdout] 2190 | fn parse_atom_entry(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bond_entry` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2211:4
[INFO] [stdout]      |
[INFO] [stdout] 2211 | fn parse_bond_entry(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smarts_bond_parse` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2233:4
[INFO] [stdout]      |
[INFO] [stdout] 2233 | fn smarts_bond_parse(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smarts_atom_parse` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2249:4
[INFO] [stdout]      |
[INFO] [stdout] 2249 | fn smarts_atom_parse(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_atom` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2265:4
[INFO] [stdout]      |
[INFO] [stdout] 2265 | fn to_atom(
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_from_smarts` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2301:4
[INFO] [stdout]      |
[INFO] [stdout] 2301 | fn atom_from_smarts(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_bond` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2319:4
[INFO] [stdout]      |
[INFO] [stdout] 2319 | fn to_bond(
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bond_from_smarts` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2355:4
[INFO] [stdout]      |
[INFO] [stdout] 2355 | fn bond_from_smarts(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_query_hs` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3525:4
[INFO] [stdout]      |
[INFO] [stdout] 3525 | fn merge_query_hs(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_node_h_status` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3548:4
[INFO] [stdout]      |
[INFO] [stdout] 3548 | fn query_node_h_status(query: &QueryNode<AtomQueryPredicate>) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_query_hs` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3570:4
[INFO] [stdout]      |
[INFO] [stdout] 3570 | fn has_query_hs(molecule: &QueryGraph) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_query_hs_graph` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3630:4
[INFO] [stdout]      |
[INFO] [stdout] 3630 | fn has_query_hs_graph(graph: &QueryGraph) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Atom` and `Bond` are never constructed
[INFO] [stdout]     --> src/smarts_parse.rs:3829:5
[INFO] [stdout]      |
[INFO] [stdout] 3827 | enum ScannerStart {
[INFO] [stdout]      |      ------------ variants in this enum
[INFO] [stdout] 3828 |     Molecule,
[INFO] [stdout] 3829 |     Atom,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 3830 |     Bond,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ScannerStart` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `source_error_position` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:5623:8
[INFO] [stdout]      |
[INFO] [stdout] 5585 | impl<'a> SmartsParser<'a> {
[INFO] [stdout]      | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 5623 |     fn source_error_position(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_atom_positions` is never used
[INFO] [stdout]    --> src/smarts_write.rs:526:4
[INFO] [stdout]     |
[INFO] [stdout] 526 | fn query_cx_atom_positions(atom_order: &[AtomId], atom_count: usize) -> Vec<Option<usize>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_source_reverse_atom_order` is never used
[INFO] [stdout]    --> src/smarts_write.rs:535:4
[INFO] [stdout]     |
[INFO] [stdout] 535 | fn query_cx_source_reverse_atom_order(atom_order: &[AtomId], atom_count: usize) -> Vec<usize> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quote_query_cx_atom_property` is never used
[INFO] [stdout]    --> src/smarts_write.rs:840:4
[INFO] [stdout]     |
[INFO] [stdout] 840 | fn quote_query_cx_atom_property(text: &[u8]) -> PropertyText {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_other_atom` is never used
[INFO] [stdout]     --> src/smarts_write.rs:1626:4
[INFO] [stdout]      |
[INFO] [stdout] 1626 | fn query_cx_other_atom(bond: &Bond, atom: AtomId) -> Option<AtomId> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `describe_query` is never used
[INFO] [stdout]     --> src/smarts_write.rs:3414:4
[INFO] [stdout]      |
[INFO] [stdout] 3414 | fn describe_query<T>(query: &QueryNode<T>, leader: String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recurse_get_smarts` is never used
[INFO] [stdout]     --> src/smarts_write.rs:4270:4
[INFO] [stdout]      |
[INFO] [stdout] 4270 | fn recurse_get_smarts<F>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Hybridization`
[INFO] [stdout]   --> src/cx_lowering.rs:15:34
[INFO] [stdout]    |
[INFO] [stdout] 15 | use cosmolkit_types::{ChiralTag, Hybridization};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]     --> src/matcher.rs:9035:9
[INFO] [stdout]      |
[INFO] [stdout] 9035 |     use std::collections::BTreeMap;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdjacencyList`
[INFO] [stdout]  --> src/smarts_write.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     AdjacencyList, AtomId, AtomQueryPredicate, AtomRangeBounds, AtomRangeDataFunction, Bond,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchTargetAccess`
[INFO] [stdout]     --> src/matcher.rs:8601:23
[INFO] [stdout]      |
[INFO] [stdout] 8601 |         SearchTarget, SearchTargetAccess, SmartsParseParams, build_prepared_query_match_context,
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> tests/migration_q_source_scalar_cleanup.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |             missing.atoms_mut()[0].clear_prop("probe");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 55 |             let _ = missing.atoms_mut()[0].clear_prop("probe");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `match_query`
[INFO] [stdout]   --> tests/migration_q_parser.rs:20:43
[INFO] [stdout]    |
[INFO] [stdout] 20 |     SmartsParseParams, SmartsWriteParams, match_query, parse_smarts, write_smarts,
[INFO] [stdout]    |                                           ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]     --> src/matcher.rs:6879:13
[INFO] [stdout]      |
[INFO] [stdout] 6879 |         let query = query_graph(vec![query_atom.clone()], Vec::new());
[INFO] [stdout]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/migration_q_match.rs:839:5
[INFO] [stdout]     |
[INFO] [stdout] 839 |     rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 839 |     let _ = rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/migration_q_match.rs:990:5
[INFO] [stdout]     |
[INFO] [stdout] 990 |     rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 990 |     let _ = rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> tests/migration_q_match.rs:1029:5
[INFO] [stdout]      |
[INFO] [stdout] 1029 |     negative_root_inner.set_prop("_queryRootAtom", "-1");
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1029 |     let _ = negative_root_inner.set_prop("_queryRootAtom", "-1");
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> tests/migration_q_parser.rs:2494:5
[INFO] [stdout]      |
[INFO] [stdout] 2494 |     cloned_graph.set_prop("_q23_clone_probe", "detached");
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 2494 |     let _ = cloned_graph.set_prop("_q23_clone_probe", "detached");
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rings`
[INFO] [stdout]    --> src/query_behavior.rs:549:14
[INFO] [stdout]     |
[INFO] [stdout] 549 |         let (rings, valence) = prepare(&topology);
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_rings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `valence`
[INFO] [stdout]    --> src/query_behavior.rs:549:21
[INFO] [stdout]     |
[INFO] [stdout] 549 |         let (rings, valence) = prepare(&topology);
[INFO] [stdout]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_valence`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/smarts_parse.rs:299:13
[INFO] [stdout]     |
[INFO] [stdout] 299 |             mut atoms,
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/smarts_parse.rs:371:13
[INFO] [stdout]     |
[INFO] [stdout] 371 |         let mut graph = QueryGraph::from_parts(
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]      --> src/smarts_write.rs:11023:13
[INFO] [stdout]       |
[INFO] [stdout] 11023 |         let mut query =
[INFO] [stdout]       |             ----^^^^^
[INFO] [stdout]       |             |
[INFO] [stdout]       |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `coordinates`
[INFO] [stdout]    --> src/target.rs:274:13
[INFO] [stdout]     |
[INFO] [stdout] 274 |         let coordinates = CoordinateBlock::default();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_coordinates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/cx_lowering.rs:3887:8
[INFO] [stdout]      |
[INFO] [stdout] 3887 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/cx_lowering.rs:3890:8
[INFO] [stdout]      |
[INFO] [stdout] 3890 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pol_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1302:4
[INFO] [stdout]      |
[INFO] [stdout] 1302 | fn pol_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `r_atom_matcher` is never used
[INFO] [stdout]     --> src/generic_groups.rs:1333:4
[INFO] [stdout]      |
[INFO] [stdout] 1333 | fn r_atom_matcher(mol: &SearchTarget<'_>, atom: usize, ignore: Vec<bool>) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clone_state`, `clone`, `debug_order`, and `core_len` are never used
[INFO] [stdout]     --> src/matcher.rs:2104:8
[INFO] [stdout]      |
[INFO] [stdout] 2023 | impl<'a> Vf2SubState<'a> {
[INFO] [stdout]      | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2104 |     fn clone_state(&self) -> Self {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2151 |     fn clone(&self) -> Self {
[INFO] [stdout]      |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2159 |     fn debug_order(&self) -> Option<&[NodeId]> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2190 |     fn core_len(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_duplicates` is never used
[INFO] [stdout]     --> src/matcher.rs:5463:4
[INFO] [stdout]      |
[INFO] [stdout] 5463 | fn remove_duplicates(matches: &mut Vec<SubstructMatchResult>, atom_count: usize) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_contains_atomic_number` is never used
[INFO] [stdout]     --> src/matcher.rs:5517:4
[INFO] [stdout]      |
[INFO] [stdout] 5517 | fn query_contains_atomic_number(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Xor` is never constructed
[INFO] [stdout]    --> src/query_behavior.rs:746:5
[INFO] [stdout]     |
[INFO] [stdout] 743 | pub(crate) enum CompositeQueryType {
[INFO] [stdout]     |                 ------------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 746 |     Xor,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CompositeQueryType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RangeQueryType` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1049:6
[INFO] [stdout]      |
[INFO] [stdout] 1049 | enum RangeQueryType {
[INFO] [stdout]      |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `QueryFinalizationError` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1057:6
[INFO] [stdout]      |
[INFO] [stdout] 1057 | enum QueryFinalizationError {
[INFO] [stdout]      |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_atom_ring_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1064:4
[INFO] [stdout]      |
[INFO] [stdout] 1064 | fn finalize_atom_ring_size_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_atom_query_from_description` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1142:4
[INFO] [stdout]      |
[INFO] [stdout] 1142 | fn finalize_atom_query_from_description(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_has_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1247:4
[INFO] [stdout]      |
[INFO] [stdout] 1247 | fn make_atom_has_prop_query(property: impl Into<String>) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1258:4
[INFO] [stdout]      |
[INFO] [stdout] 1258 | fn make_atom_prop_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_list_query_helper` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1617:4
[INFO] [stdout]      |
[INFO] [stdout] 1617 | fn atom_list_query_helper(query: &QueryNode<AtomQueryPredicate>, ignore_negation: bool) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_list_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1659:4
[INFO] [stdout]      |
[INFO] [stdout] 1659 | fn is_atom_list_query(atom: &Atom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_list_query_values` is never used
[INFO] [stdout]     --> src/query_behavior.rs:1698:4
[INFO] [stdout]      |
[INFO] [stdout] 1698 | fn get_atom_list_query_values(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_type_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2006:4
[INFO] [stdout]      |
[INFO] [stdout] 2006 | fn make_atom_type_query(num: u8, aromatic: bool) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_implicit_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2036:4
[INFO] [stdout]      |
[INFO] [stdout] 2036 | fn make_atom_implicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_explicit_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2058:4
[INFO] [stdout]      |
[INFO] [stdout] 2058 | fn make_atom_explicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_total_valence_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2080:4
[INFO] [stdout]      |
[INFO] [stdout] 2080 | fn make_atom_total_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_heavy_atom_degree_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2149:4
[INFO] [stdout]      |
[INFO] [stdout] 2149 | fn make_atom_heavy_atom_degree_query(what: u32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_unsaturated_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2284:4
[INFO] [stdout]      |
[INFO] [stdout] 2284 | fn make_atom_unsaturated_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_in_n_rings_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2319:4
[INFO] [stdout]      |
[INFO] [stdout] 2319 | fn make_atom_in_n_rings_query(what: u8) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_in_ring_of_size_range_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2374:4
[INFO] [stdout]      |
[INFO] [stdout] 2374 | fn make_atom_in_ring_of_size_range_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_is_bridgehead_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:2863:4
[INFO] [stdout]      |
[INFO] [stdout] 2863 | fn make_atom_is_bridgehead_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_negative_formal_charge_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3265:4
[INFO] [stdout]      |
[INFO] [stdout] 3265 | fn make_atom_negative_formal_charge_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_has_chiral_tag_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3335:4
[INFO] [stdout]      |
[INFO] [stdout] 3335 | fn make_atom_has_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_atom_missing_chiral_tag_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3354:4
[INFO] [stdout]      |
[INFO] [stdout] 3354 | fn make_atom_missing_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_has_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3389:4
[INFO] [stdout]      |
[INFO] [stdout] 3389 | fn make_bond_has_prop_query(property: impl Into<String>) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_prop_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3400:4
[INFO] [stdout]      |
[INFO] [stdout] 3400 | fn make_bond_prop_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize_bond_query_from_description` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3419:4
[INFO] [stdout]      |
[INFO] [stdout] 3419 | fn finalize_bond_query_from_description(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_dir_equals_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3469:4
[INFO] [stdout]      |
[INFO] [stdout] 3469 | fn make_bond_dir_equals_query(what: crate::BondDirection) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_has_stereo_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3487:4
[INFO] [stdout]      |
[INFO] [stdout] 3487 | fn make_bond_has_stereo_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_in_n_rings_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3524:4
[INFO] [stdout]      |
[INFO] [stdout] 3524 | fn make_bond_in_n_rings_query(what: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_in_ring_of_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3542:4
[INFO] [stdout]      |
[INFO] [stdout] 3542 | fn make_bond_in_ring_of_size_query(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_bond_min_ring_size_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3624:4
[INFO] [stdout]      |
[INFO] [stdout] 3624 | fn make_bond_min_ring_size_query(target: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_query_bond_spec` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3667:4
[INFO] [stdout]      |
[INFO] [stdout] 3667 | fn make_query_bond_spec(begin: AtomId, end: AtomId, order: BondOrder) -> crate::QueryBond {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_double_or_aromatic_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3785:4
[INFO] [stdout]      |
[INFO] [stdout] 3785 | fn make_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_single_or_double_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3807:4
[INFO] [stdout]      |
[INFO] [stdout] 3807 | fn make_single_or_double_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_single_or_double_or_aromatic_bond_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3829:4
[INFO] [stdout]      |
[INFO] [stdout] 3829 | fn make_single_or_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_query_match_context_from_blocks` is never used
[INFO] [stdout]     --> src/query_behavior.rs:3956:15
[INFO] [stdout]      |
[INFO] [stdout] 3956 | pub(crate) fn build_query_match_context_from_blocks<'a>(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_data` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4325:4
[INFO] [stdout]      |
[INFO] [stdout] 4325 | fn null_data<T>(_value: T) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_query` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4338:4
[INFO] [stdout]      |
[INFO] [stdout] 4338 | fn null_query<T>(_value: T) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_atom_dummy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4351:4
[INFO] [stdout]      |
[INFO] [stdout] 4351 | fn is_atom_dummy(atom: &crate::QueryAtom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_metal` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4374:4
[INFO] [stdout]      |
[INFO] [stdout] 4374 | fn is_metal(atom: &Atom) -> bool {
[INFO] [stdout]      |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_num` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4481:4
[INFO] [stdout]      |
[INFO] [stdout] 4481 | fn query_atom_num(at: &Atom) -> u8 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_type_is_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4524:4
[INFO] [stdout]      |
[INFO] [stdout] 4524 | fn get_atom_type_is_aromatic(val: i32) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_atom_type_atomic_num` is never used
[INFO] [stdout]     --> src/query_behavior.rs:4535:4
[INFO] [stdout]      |
[INFO] [stdout] 4535 | fn get_atom_type_atomic_num(val: i32) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rdkit_bond_type_prime` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5131:10
[INFO] [stdout]      |
[INFO] [stdout] 5131 | const fn rdkit_bond_type_prime(order: BondOrder) -> u32 {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_bond_product` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5191:4
[INFO] [stdout]      |
[INFO] [stdout] 5191 | fn query_atom_bond_product(at: &Atom, adj: &AdjacencyList, mol: &impl SearchTargetAccess) -> u32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_all_bond_product` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5218:4
[INFO] [stdout]      |
[INFO] [stdout] 5218 | fn query_atom_all_bond_product(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5678:4
[INFO] [stdout]      |
[INFO] [stdout] 5678 | fn query_bond_is_single_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_double_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5692:4
[INFO] [stdout]      |
[INFO] [stdout] 5692 | fn query_bond_is_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_double` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5706:4
[INFO] [stdout]      |
[INFO] [stdout] 5706 | fn query_bond_is_single_or_double(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_is_single_or_double_or_aromatic` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5720:4
[INFO] [stdout]      |
[INFO] [stdout] 5720 | fn query_bond_is_single_or_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `greater_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:5976:4
[INFO] [stdout]      |
[INFO] [stdout] 5976 | fn greater_query_match<T>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `less_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6034:4
[INFO] [stdout]      |
[INFO] [stdout] 6034 | fn less_query_match<T>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_query_match` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6147:4
[INFO] [stdout]      |
[INFO] [stdout] 6147 | fn set_query_match<T, U: Ord>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_atom_copy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6166:4
[INFO] [stdout]      |
[INFO] [stdout] 6166 | fn query_atom_copy(atom: &crate::QueryAtom) -> crate::QueryAtom {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_copy` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6179:4
[INFO] [stdout]      |
[INFO] [stdout] 6179 | fn query_bond_copy(bond: &crate::QueryBond) -> crate::QueryBond {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_set_type` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6192:4
[INFO] [stdout]      |
[INFO] [stdout] 6192 | fn query_bond_set_type(bond: &mut crate::QueryBond, bond_type: BondOrder) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_bond_set_dir` is never used
[INFO] [stdout]     --> src/query_behavior.rs:6210:4
[INFO] [stdout]      |
[INFO] [stdout] 6210 | fn query_bond_set_dir(bond: &mut crate::QueryBond, direction: crate::BondDirection) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `num_atoms`, `atom_query`, and `bond_query` are never used
[INFO] [stdout]    --> src/smarts_parse.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl QueryGraphBuilder {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout]  90 |     #[must_use]
[INFO] [stdout]  91 |     pub fn num_atoms(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn atom_query(&self, idx: usize) -> Option<&QueryNode<AtomQueryPredicate>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn bond_query(&self, idx: usize) -> Option<&QueryNode<BondQueryPredicate>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_graph_for_test` is never used
[INFO] [stdout]    --> src/smarts_parse.rs:385:4
[INFO] [stdout]     |
[INFO] [stdout] 385 | fn query_graph_for_test(inp: &str) -> Result<QueryGraph, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smarts_bond_parse` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2233:4
[INFO] [stdout]      |
[INFO] [stdout] 2233 | fn smarts_bond_parse(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smarts_atom_parse` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2249:4
[INFO] [stdout]      |
[INFO] [stdout] 2249 | fn smarts_atom_parse(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_atom` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2265:4
[INFO] [stdout]      |
[INFO] [stdout] 2265 | fn to_atom(
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `atom_from_smarts` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2301:4
[INFO] [stdout]      |
[INFO] [stdout] 2301 | fn atom_from_smarts(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_bond` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2319:4
[INFO] [stdout]      |
[INFO] [stdout] 2319 | fn to_bond(
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bond_from_smarts` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:2355:4
[INFO] [stdout]      |
[INFO] [stdout] 2355 | fn bond_from_smarts(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_node_h_status` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3548:4
[INFO] [stdout]      |
[INFO] [stdout] 3548 | fn query_node_h_status(query: &QueryNode<AtomQueryPredicate>) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_query_hs` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3570:4
[INFO] [stdout]      |
[INFO] [stdout] 3570 | fn has_query_hs(molecule: &QueryGraph) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_query_hs_graph` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:3630:4
[INFO] [stdout]      |
[INFO] [stdout] 3630 | fn has_query_hs_graph(graph: &QueryGraph) -> (bool, bool) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `source_error_position` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:5623:8
[INFO] [stdout]      |
[INFO] [stdout] 5585 | impl<'a> SmartsParser<'a> {
[INFO] [stdout]      | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 5623 |     fn source_error_position(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:8818:8
[INFO] [stdout]      |
[INFO] [stdout] 8818 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:8821:8
[INFO] [stdout]      |
[INFO] [stdout] 8821 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9352:8
[INFO] [stdout]      |
[INFO] [stdout] 9352 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9355:8
[INFO] [stdout]      |
[INFO] [stdout] 9355 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9659:8
[INFO] [stdout]      |
[INFO] [stdout] 9659 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9662:8
[INFO] [stdout]      |
[INFO] [stdout] 9662 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9706:8
[INFO] [stdout]      |
[INFO] [stdout] 9706 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9709:8
[INFO] [stdout]      |
[INFO] [stdout] 9709 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9865:8
[INFO] [stdout]      |
[INFO] [stdout] 9865 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9868:8
[INFO] [stdout]      |
[INFO] [stdout] 9868 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9921:8
[INFO] [stdout]      |
[INFO] [stdout] 9921 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9924:8
[INFO] [stdout]      |
[INFO] [stdout] 9924 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9993:8
[INFO] [stdout]      |
[INFO] [stdout] 9993 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]     --> src/smarts_parse.rs:9996:8
[INFO] [stdout]      |
[INFO] [stdout] 9996 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10035:8
[INFO] [stdout]       |
[INFO] [stdout] 10035 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10038:8
[INFO] [stdout]       |
[INFO] [stdout] 10038 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10201:8
[INFO] [stdout]       |
[INFO] [stdout] 10201 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10204:8
[INFO] [stdout]       |
[INFO] [stdout] 10204 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10324:8
[INFO] [stdout]       |
[INFO] [stdout] 10324 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10327:8
[INFO] [stdout]       |
[INFO] [stdout] 10327 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10438:8
[INFO] [stdout]       |
[INFO] [stdout] 10438 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10441:8
[INFO] [stdout]       |
[INFO] [stdout] 10441 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10765:8
[INFO] [stdout]       |
[INFO] [stdout] 10765 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:10768:8
[INFO] [stdout]       |
[INFO] [stdout] 10768 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:11027:8
[INFO] [stdout]       |
[INFO] [stdout] 11027 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:11030:8
[INFO] [stdout]       |
[INFO] [stdout] 11030 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_text` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:11142:8
[INFO] [stdout]       |
[INFO] [stdout] 11142 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixture_value` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:11145:8
[INFO] [stdout]       |
[INFO] [stdout] 11145 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout]       |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bond_prop` is never used
[INFO] [stdout]      --> src/smarts_parse.rs:11160:8
[INFO] [stdout]       |
[INFO] [stdout] 11160 |     fn bond_prop<'a>(graph: &'a QueryGraph, bond_index: usize, key: &str) -> Option<&'a str> {
[INFO] [stdout]       |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_atom_positions` is never used
[INFO] [stdout]    --> src/smarts_write.rs:526:4
[INFO] [stdout]     |
[INFO] [stdout] 526 | fn query_cx_atom_positions(atom_order: &[AtomId], atom_count: usize) -> Vec<Option<usize>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_source_reverse_atom_order` is never used
[INFO] [stdout]    --> src/smarts_write.rs:535:4
[INFO] [stdout]     |
[INFO] [stdout] 535 | fn query_cx_source_reverse_atom_order(atom_order: &[AtomId], atom_count: usize) -> Vec<usize> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quote_query_cx_atom_property` is never used
[INFO] [stdout]    --> src/smarts_write.rs:840:4
[INFO] [stdout]     |
[INFO] [stdout] 840 | fn quote_query_cx_atom_property(text: &[u8]) -> PropertyText {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_cx_other_atom` is never used
[INFO] [stdout]     --> src/smarts_write.rs:1626:4
[INFO] [stdout]      |
[INFO] [stdout] 1626 | fn query_cx_other_atom(bond: &Bond, atom: AtomId) -> Option<AtomId> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/matcher.rs:7185:9
[INFO] [stdout]      |
[INFO] [stdout] 7185 |         inner_query.set_prop("_queryRootAtom", "0");
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 7185 |         let _ = inner_query.set_prop("_queryRootAtom", "0");
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 19s
[INFO] running `Command { std: "docker" "inspect" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Hybridization`
[INFO] [stderr]   --> src/cx_lowering.rs:15:34
[INFO] [stderr]    |
[INFO] [stderr] 15 | use cosmolkit_types::{ChiralTag, Hybridization};
[INFO] [stderr]    |                                  ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `QueryAtom` and `QueryBond`
[INFO] [stderr]   --> src/query_behavior.rs:39:68
[INFO] [stderr]    |
[INFO] [stderr] 39 | use cosmolkit_model::{AdjacencyList, Atom, AtomId, Bond, BondSpec, QueryAtom, QueryBond};
[INFO] [stderr]    |                                                                    ^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `cosmolkit_core::ValenceAssignment`
[INFO] [stderr]     --> src/query_behavior.rs:7944:9
[INFO] [stderr]      |
[INFO] [stderr] 7944 |     use cosmolkit_core::ValenceAssignment;
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stderr]     --> src/query_behavior.rs:7942:1
[INFO] [stderr]      |
[INFO] [stderr] 7942 | mod descriptor_hbd_context_tests {
[INFO] [stderr]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AdjacencyList`
[INFO] [stderr]  --> src/smarts_write.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 |     AdjacencyList, AtomId, AtomQueryPredicate, AtomRangeBounds, AtomRangeDataFunction, Bond,
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BTreeSet`
[INFO] [stderr]   --> src/smarts_write.rs:10:34
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::collections::{BTreeMap, BTreeSet};
[INFO] [stderr]    |                                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::BTreeMap`
[INFO] [stderr]  --> src/query_cx_composition.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::collections::BTreeMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/smarts_parse.rs:299:13
[INFO] [stderr]     |
[INFO] [stderr] 299 |             mut atoms,
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/smarts_parse.rs:371:13
[INFO] [stderr]     |
[INFO] [stderr] 371 |         let mut graph = QueryGraph::from_parts(
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: function `d_atom_matcher` is never used
[INFO] [stderr]     --> src/generic_groups.rs:1233:4
[INFO] [stderr]      |
[INFO] [stderr] 1233 | fn d_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `t_atom_matcher` is never used
[INFO] [stderr]     --> src/generic_groups.rs:1256:4
[INFO] [stderr]      |
[INFO] [stderr] 1256 | fn t_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hplus_atom_matcher` is never used
[INFO] [stderr]     --> src/generic_groups.rs:1279:4
[INFO] [stderr]      |
[INFO] [stderr] 1279 | fn hplus_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pol_atom_matcher` is never used
[INFO] [stderr]     --> src/generic_groups.rs:1302:4
[INFO] [stderr]      |
[INFO] [stderr] 1302 | fn pol_atom_matcher(_mol: &SearchTarget<'_>, atom: usize, mut ignore: Vec<bool>) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `r_atom_matcher` is never used
[INFO] [stderr]     --> src/generic_groups.rs:1333:4
[INFO] [stderr]      |
[INFO] [stderr] 1333 | fn r_atom_matcher(mol: &SearchTarget<'_>, atom: usize, ignore: Vec<bool>) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `num_bonds` is never used
[INFO] [stderr]     --> src/matcher.rs:1081:19
[INFO] [stderr]      |
[INFO] [stderr] 1076 | impl Vf2Graph {
[INFO] [stderr]      | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 1081 |     pub(crate) fn num_bonds(&self) -> usize {
[INFO] [stderr]      |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `num_bonds` is never used
[INFO] [stderr]     --> src/matcher.rs:1126:8
[INFO] [stderr]      |
[INFO] [stderr] 1100 | impl<'a> Vf2GraphRef<'a> {
[INFO] [stderr]      | ------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 1126 |     fn num_bonds(self) -> usize {
[INFO] [stderr]      |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `property_equal_as_strings` is never used
[INFO] [stderr]     --> src/matcher.rs:1181:4
[INFO] [stderr]      |
[INFO] [stderr] 1181 | fn property_equal_as_strings(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `MatchVect` is never used
[INFO] [stderr]     --> src/matcher.rs:1304:6
[INFO] [stderr]      |
[INFO] [stderr] 1304 | type MatchVect = Vec<(i32, i32)>;
[INFO] [stderr]      |      ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `insert_if_needed` is never used
[INFO] [stderr]     --> src/matcher.rs:1306:4
[INFO] [stderr]      |
[INFO] [stderr] 1306 | fn insert_if_needed(matches: &mut BTreeSet<MatchVect>, candidate: MatchVect) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `try_to_insert` is never used
[INFO] [stderr]     --> src/matcher.rs:1364:4
[INFO] [stderr]      |
[INFO] [stderr] 1364 | fn try_to_insert(
[INFO] [stderr]      |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `clone_state`, `clone`, `debug_order`, `core_len`, and `match_one` are never used
[INFO] [stderr]     --> src/matcher.rs:2104:8
[INFO] [stderr]      |
[INFO] [stderr] 2023 | impl<'a> Vf2SubState<'a> {
[INFO] [stderr]      | ------------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 2104 |     fn clone_state(&self) -> Self {
[INFO] [stderr]      |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2151 |     fn clone(&self) -> Self {
[INFO] [stderr]      |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2159 |     fn debug_order(&self) -> Option<&[NodeId]> {
[INFO] [stderr]      |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2190 |     fn core_len(&self) -> usize {
[INFO] [stderr]      |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2915 |     fn match_one(
[INFO] [stderr]      |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `vf2_match` is never used
[INFO] [stderr]     --> src/matcher.rs:3107:4
[INFO] [stderr]      |
[INFO] [stderr] 3107 | fn vf2_match(
[INFO] [stderr]      |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `vf2_entry_one` is never used
[INFO] [stderr]     --> src/matcher.rs:3252:4
[INFO] [stderr]      |
[INFO] [stderr] 3252 | fn vf2_entry_one(
[INFO] [stderr]      |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `vf2_entry_all` is never used
[INFO] [stderr]     --> src/matcher.rs:3331:4
[INFO] [stderr]      |
[INFO] [stderr] 3331 | fn vf2_entry_all(
[INFO] [stderr]      |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `chiral_atom_compat` is never used
[INFO] [stderr]     --> src/matcher.rs:5162:4
[INFO] [stderr]      |
[INFO] [stderr] 5162 | fn chiral_atom_compat(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `remove_duplicates` is never used
[INFO] [stderr]     --> src/matcher.rs:5463:4
[INFO] [stderr]      |
[INFO] [stderr] 5463 | fn remove_duplicates(matches: &mut Vec<SubstructMatchResult>, atom_count: usize) {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_contains_atomic_number` is never used
[INFO] [stderr]     --> src/matcher.rs:5517:4
[INFO] [stderr]      |
[INFO] [stderr] 5517 | fn query_contains_atomic_number(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_atom_terminal_r_group_or_query_hydrogen` is never used
[INFO] [stderr]     --> src/matcher.rs:5535:15
[INFO] [stderr]      |
[INFO] [stderr] 5535 | pub(crate) fn is_atom_terminal_r_group_or_query_hydrogen(
[INFO] [stderr]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `core_substitution_score` is never used
[INFO] [stderr]     --> src/matcher.rs:5572:4
[INFO] [stderr]      |
[INFO] [stderr] 5572 | fn core_substitution_score(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_most_substituted_core_match` is never used
[INFO] [stderr]     --> src/matcher.rs:5669:4
[INFO] [stderr]      |
[INFO] [stderr] 5669 | fn get_most_substituted_core_match<'a>(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sort_matches_by_degree_of_core_substitution` is never used
[INFO] [stderr]     --> src/matcher.rs:6318:4
[INFO] [stderr]      |
[INFO] [stderr] 6318 | fn sort_matches_by_degree_of_core_substitution(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `core_substitution_denominator` is never used
[INFO] [stderr]      --> src/matcher.rs:11512:4
[INFO] [stderr]       |
[INFO] [stderr] 11512 | fn core_substitution_denominator(atom_count: usize) -> f64 {
[INFO] [stderr]       |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_atom_stereo_and_distance` is never used
[INFO] [stderr]    --> src/mcs/mod.rs:335:4
[INFO] [stderr]     |
[INFO] [stderr] 335 | fn check_atom_stereo_and_distance(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `source_equal` is never used
[INFO] [stderr]     --> src/mcs/mod.rs:3557:8
[INFO] [stderr]      |
[INFO] [stderr] 3534 | impl McsDuplicateSeedKey {
[INFO] [stderr]      | ------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 3557 |     fn source_equal(&self, right: &Self) -> bool {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_initial_match_tables` is never used
[INFO] [stderr]     --> src/mcs/mod.rs:6248:4
[INFO] [stderr]      |
[INFO] [stderr] 6248 | fn build_initial_match_tables(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Xor` is never constructed
[INFO] [stderr]    --> src/query_behavior.rs:746:5
[INFO] [stderr]     |
[INFO] [stderr] 743 | pub(crate) enum CompositeQueryType {
[INFO] [stderr]     |                 ------------------ variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 746 |     Xor,
[INFO] [stderr]     |     ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `CompositeQueryType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: enum `RangeQueryType` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1049:6
[INFO] [stderr]      |
[INFO] [stderr] 1049 | enum RangeQueryType {
[INFO] [stderr]      |      ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `QueryFinalizationError` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1057:6
[INFO] [stderr]      |
[INFO] [stderr] 1057 | enum QueryFinalizationError {
[INFO] [stderr]      |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `finalize_atom_ring_size_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1064:4
[INFO] [stderr]      |
[INFO] [stderr] 1064 | fn finalize_atom_ring_size_query(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `finalize_atom_query_from_description` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1142:4
[INFO] [stderr]      |
[INFO] [stderr] 1142 | fn finalize_atom_query_from_description(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_has_prop_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1247:4
[INFO] [stderr]      |
[INFO] [stderr] 1247 | fn make_atom_has_prop_query(property: impl Into<String>) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_prop_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1258:4
[INFO] [stderr]      |
[INFO] [stderr] 1258 | fn make_atom_prop_query(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `atom_list_query_helper` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1617:4
[INFO] [stderr]      |
[INFO] [stderr] 1617 | fn atom_list_query_helper(query: &QueryNode<AtomQueryPredicate>, ignore_negation: bool) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_atom_list_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1659:4
[INFO] [stderr]      |
[INFO] [stderr] 1659 | fn is_atom_list_query(atom: &Atom) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_atom_list_query_values` is never used
[INFO] [stderr]     --> src/query_behavior.rs:1698:4
[INFO] [stderr]      |
[INFO] [stderr] 1698 | fn get_atom_list_query_values(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_type_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2006:4
[INFO] [stderr]      |
[INFO] [stderr] 2006 | fn make_atom_type_query(num: u8, aromatic: bool) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_implicit_valence_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2036:4
[INFO] [stderr]      |
[INFO] [stderr] 2036 | fn make_atom_implicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_explicit_valence_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2058:4
[INFO] [stderr]      |
[INFO] [stderr] 2058 | fn make_atom_explicit_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_total_valence_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2080:4
[INFO] [stderr]      |
[INFO] [stderr] 2080 | fn make_atom_total_valence_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_heavy_atom_degree_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2149:4
[INFO] [stderr]      |
[INFO] [stderr] 2149 | fn make_atom_heavy_atom_degree_query(what: u32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_unsaturated_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2284:4
[INFO] [stderr]      |
[INFO] [stderr] 2284 | fn make_atom_unsaturated_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_in_n_rings_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2319:4
[INFO] [stderr]      |
[INFO] [stderr] 2319 | fn make_atom_in_n_rings_query(what: u8) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_in_ring_of_size_range_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2374:4
[INFO] [stderr]      |
[INFO] [stderr] 2374 | fn make_atom_in_ring_of_size_range_query(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `replace_atom_with_query_atom` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2604:15
[INFO] [stderr]      |
[INFO] [stderr] 2604 | pub(crate) fn replace_atom_with_query_atom(
[INFO] [stderr]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_is_bridgehead_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:2863:4
[INFO] [stderr]      |
[INFO] [stderr] 2863 | fn make_atom_is_bridgehead_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_negative_formal_charge_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3265:4
[INFO] [stderr]      |
[INFO] [stderr] 3265 | fn make_atom_negative_formal_charge_query(what: i32) -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_has_chiral_tag_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3335:4
[INFO] [stderr]      |
[INFO] [stderr] 3335 | fn make_atom_has_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_atom_missing_chiral_tag_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3354:4
[INFO] [stderr]      |
[INFO] [stderr] 3354 | fn make_atom_missing_chiral_tag_query() -> QueryNode<AtomQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_bond_has_prop_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3389:4
[INFO] [stderr]      |
[INFO] [stderr] 3389 | fn make_bond_has_prop_query(property: impl Into<String>) -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_bond_prop_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3400:4
[INFO] [stderr]      |
[INFO] [stderr] 3400 | fn make_bond_prop_query(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `finalize_bond_query_from_description` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3419:4
[INFO] [stderr]      |
[INFO] [stderr] 3419 | fn finalize_bond_query_from_description(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_bond_dir_equals_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3469:4
[INFO] [stderr]      |
[INFO] [stderr] 3469 | fn make_bond_dir_equals_query(what: crate::BondDirection) -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_bond_has_stereo_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3487:4
[INFO] [stderr]      |
[INFO] [stderr] 3487 | fn make_bond_has_stereo_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_bond_in_n_rings_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3524:4
[INFO] [stderr]      |
[INFO] [stderr] 3524 | fn make_bond_in_n_rings_query(what: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_bond_in_ring_of_size_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3542:4
[INFO] [stderr]      |
[INFO] [stderr] 3542 | fn make_bond_in_ring_of_size_query(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_bond_min_ring_size_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3624:4
[INFO] [stderr]      |
[INFO] [stderr] 3624 | fn make_bond_min_ring_size_query(target: i32) -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_query_bond_spec` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3667:4
[INFO] [stderr]      |
[INFO] [stderr] 3667 | fn make_query_bond_spec(begin: AtomId, end: AtomId, order: BondOrder) -> crate::QueryBond {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_double_or_aromatic_bond_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3785:4
[INFO] [stderr]      |
[INFO] [stderr] 3785 | fn make_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_single_or_double_bond_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3807:4
[INFO] [stderr]      |
[INFO] [stderr] 3807 | fn make_single_or_double_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_single_or_double_or_aromatic_bond_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3829:4
[INFO] [stderr]      |
[INFO] [stderr] 3829 | fn make_single_or_double_or_aromatic_bond_query() -> QueryNode<BondQueryPredicate> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_query_match_context_from_blocks` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3956:15
[INFO] [stderr]      |
[INFO] [stderr] 3956 | pub(crate) fn build_query_match_context_from_blocks<'a>(
[INFO] [stderr]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `atom_predicate_matches_from_blocks` is never used
[INFO] [stderr]     --> src/query_behavior.rs:3971:15
[INFO] [stderr]      |
[INFO] [stderr] 3971 | pub(crate) fn atom_predicate_matches_from_blocks(
[INFO] [stderr]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `null_data` is never used
[INFO] [stderr]     --> src/query_behavior.rs:4325:4
[INFO] [stderr]      |
[INFO] [stderr] 4325 | fn null_data<T>(_value: T) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `null_query` is never used
[INFO] [stderr]     --> src/query_behavior.rs:4338:4
[INFO] [stderr]      |
[INFO] [stderr] 4338 | fn null_query<T>(_value: T) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_atom_dummy` is never used
[INFO] [stderr]     --> src/query_behavior.rs:4351:4
[INFO] [stderr]      |
[INFO] [stderr] 4351 | fn is_atom_dummy(atom: &crate::QueryAtom) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_metal` is never used
[INFO] [stderr]     --> src/query_behavior.rs:4374:4
[INFO] [stderr]      |
[INFO] [stderr] 4374 | fn is_metal(atom: &Atom) -> bool {
[INFO] [stderr]      |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_atom_num` is never used
[INFO] [stderr]     --> src/query_behavior.rs:4481:4
[INFO] [stderr]      |
[INFO] [stderr] 4481 | fn query_atom_num(at: &Atom) -> u8 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_atom_type_is_aromatic` is never used
[INFO] [stderr]     --> src/query_behavior.rs:4524:4
[INFO] [stderr]      |
[INFO] [stderr] 4524 | fn get_atom_type_is_aromatic(val: i32) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_atom_type_atomic_num` is never used
[INFO] [stderr]     --> src/query_behavior.rs:4535:4
[INFO] [stderr]      |
[INFO] [stderr] 4535 | fn get_atom_type_atomic_num(val: i32) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rdkit_bond_type_prime` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5131:10
[INFO] [stderr]      |
[INFO] [stderr] 5131 | const fn rdkit_bond_type_prime(order: BondOrder) -> u32 {
[INFO] [stderr]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_atom_bond_product` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5191:4
[INFO] [stderr]      |
[INFO] [stderr] 5191 | fn query_atom_bond_product(at: &Atom, adj: &AdjacencyList, mol: &impl SearchTargetAccess) -> u32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_atom_all_bond_product` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5218:4
[INFO] [stderr]      |
[INFO] [stderr] 5218 | fn query_atom_all_bond_product(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_bond_is_single_or_aromatic` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5678:4
[INFO] [stderr]      |
[INFO] [stderr] 5678 | fn query_bond_is_single_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_bond_is_double_or_aromatic` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5692:4
[INFO] [stderr]      |
[INFO] [stderr] 5692 | fn query_bond_is_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_bond_is_single_or_double` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5706:4
[INFO] [stderr]      |
[INFO] [stderr] 5706 | fn query_bond_is_single_or_double(bond: &Bond) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_bond_is_single_or_double_or_aromatic` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5720:4
[INFO] [stderr]      |
[INFO] [stderr] 5720 | fn query_bond_is_single_or_double_or_aromatic(bond: &Bond) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `greater_query_match` is never used
[INFO] [stderr]     --> src/query_behavior.rs:5976:4
[INFO] [stderr]      |
[INFO] [stderr] 5976 | fn greater_query_match<T>(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `less_query_match` is never used
[INFO] [stderr]     --> src/query_behavior.rs:6034:4
[INFO] [stderr]      |
[INFO] [stderr] 6034 | fn less_query_match<T>(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_query_match` is never used
[INFO] [stderr]     --> src/query_behavior.rs:6147:4
[INFO] [stderr]      |
[INFO] [stderr] 6147 | fn set_query_match<T, U: Ord>(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_atom_copy` is never used
[INFO] [stderr]     --> src/query_behavior.rs:6166:4
[INFO] [stderr]      |
[INFO] [stderr] 6166 | fn query_atom_copy(atom: &crate::QueryAtom) -> crate::QueryAtom {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_bond_copy` is never used
[INFO] [stderr]     --> src/query_behavior.rs:6179:4
[INFO] [stderr]      |
[INFO] [stderr] 6179 | fn query_bond_copy(bond: &crate::QueryBond) -> crate::QueryBond {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_bond_set_type` is never used
[INFO] [stderr]     --> src/query_behavior.rs:6192:4
[INFO] [stderr]      |
[INFO] [stderr] 6192 | fn query_bond_set_type(bond: &mut crate::QueryBond, bond_type: BondOrder) {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_bond_set_dir` is never used
[INFO] [stderr]     --> src/query_behavior.rs:6210:4
[INFO] [stderr]      |
[INFO] [stderr] 6210 | fn query_bond_set_dir(bond: &mut crate::QueryBond, direction: crate::BondDirection) {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `chain` is never used
[INFO] [stderr]     --> src/query_behavior.rs:7948:8
[INFO] [stderr]      |
[INFO] [stderr] 7948 |     fn chain(elements: &[Element]) -> TopologyBlock {
[INFO] [stderr]      |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `num_atoms`, `atom_query`, and `bond_query` are never used
[INFO] [stderr]    --> src/smarts_parse.rs:91:12
[INFO] [stderr]     |
[INFO] [stderr]  89 | impl QueryGraphBuilder {
[INFO] [stderr]     | ---------------------- methods in this implementation
[INFO] [stderr]  90 |     #[must_use]
[INFO] [stderr]  91 |     pub fn num_atoms(&self) -> usize {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub fn atom_query(&self, idx: usize) -> Option<&QueryNode<AtomQueryPredicate>> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     pub fn bond_query(&self, idx: usize) -> Option<&QueryNode<BondQueryPredicate>> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_smarts_graph` is never used
[INFO] [stderr]    --> src/smarts_parse.rs:535:4
[INFO] [stderr]     |
[INFO] [stderr] 535 | fn parse_smarts_graph(smarts: impl AsRef<[u8]>) -> Result<QueryGraphBuilder, SmartsParseError> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_smarts_with_params` is never used
[INFO] [stderr]    --> src/smarts_parse.rs:545:4
[INFO] [stderr]     |
[INFO] [stderr] 545 | fn parse_smarts_with_params(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_atom_entry` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2190:4
[INFO] [stderr]      |
[INFO] [stderr] 2190 | fn parse_atom_entry(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_bond_entry` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2211:4
[INFO] [stderr]      |
[INFO] [stderr] 2211 | fn parse_bond_entry(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `smarts_bond_parse` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2233:4
[INFO] [stderr]      |
[INFO] [stderr] 2233 | fn smarts_bond_parse(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `smarts_atom_parse` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2249:4
[INFO] [stderr]      |
[INFO] [stderr] 2249 | fn smarts_atom_parse(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `to_atom` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2265:4
[INFO] [stderr]      |
[INFO] [stderr] 2265 | fn to_atom(
[INFO] [stderr]      |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `atom_from_smarts` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2301:4
[INFO] [stderr]      |
[INFO] [stderr] 2301 | fn atom_from_smarts(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `to_bond` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2319:4
[INFO] [stderr]      |
[INFO] [stderr] 2319 | fn to_bond(
[INFO] [stderr]      |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `bond_from_smarts` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:2355:4
[INFO] [stderr]      |
[INFO] [stderr] 2355 | fn bond_from_smarts(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `merge_query_hs` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:3525:4
[INFO] [stderr]      |
[INFO] [stderr] 3525 | fn merge_query_hs(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_node_h_status` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:3548:4
[INFO] [stderr]      |
[INFO] [stderr] 3548 | fn query_node_h_status(query: &QueryNode<AtomQueryPredicate>) -> (bool, bool) {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_query_hs` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:3570:4
[INFO] [stderr]      |
[INFO] [stderr] 3570 | fn has_query_hs(molecule: &QueryGraph) -> (bool, bool) {
[INFO] [stderr]      |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_query_hs_graph` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:3630:4
[INFO] [stderr]      |
[INFO] [stderr] 3630 | fn has_query_hs_graph(graph: &QueryGraph) -> (bool, bool) {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Atom` and `Bond` are never constructed
[INFO] [stderr]     --> src/smarts_parse.rs:3829:5
[INFO] [stderr]      |
[INFO] [stderr] 3827 | enum ScannerStart {
[INFO] [stderr]      |      ------------ variants in this enum
[INFO] [stderr] 3828 |     Molecule,
[INFO] [stderr] 3829 |     Atom,
[INFO] [stderr]      |     ^^^^
[INFO] [stderr] 3830 |     Bond,
[INFO] [stderr]      |     ^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `ScannerStart` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `source_error_position` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:5623:8
[INFO] [stderr]      |
[INFO] [stderr] 5585 | impl<'a> SmartsParser<'a> {
[INFO] [stderr]      | ------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 5623 |     fn source_error_position(&self) -> usize {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_cx_atom_positions` is never used
[INFO] [stderr]    --> src/smarts_write.rs:526:4
[INFO] [stderr]     |
[INFO] [stderr] 526 | fn query_cx_atom_positions(atom_order: &[AtomId], atom_count: usize) -> Vec<Option<usize>> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_cx_source_reverse_atom_order` is never used
[INFO] [stderr]    --> src/smarts_write.rs:535:4
[INFO] [stderr]     |
[INFO] [stderr] 535 | fn query_cx_source_reverse_atom_order(atom_order: &[AtomId], atom_count: usize) -> Vec<usize> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `quote_query_cx_atom_property` is never used
[INFO] [stderr]    --> src/smarts_write.rs:840:4
[INFO] [stderr]     |
[INFO] [stderr] 840 | fn quote_query_cx_atom_property(text: &[u8]) -> PropertyText {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_cx_other_atom` is never used
[INFO] [stderr]     --> src/smarts_write.rs:1626:4
[INFO] [stderr]      |
[INFO] [stderr] 1626 | fn query_cx_other_atom(bond: &Bond, atom: AtomId) -> Option<AtomId> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `describe_query` is never used
[INFO] [stderr]     --> src/smarts_write.rs:3414:4
[INFO] [stderr]      |
[INFO] [stderr] 3414 | fn describe_query<T>(query: &QueryNode<T>, leader: String) {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `recurse_get_smarts` is never used
[INFO] [stderr]     --> src/smarts_write.rs:4270:4
[INFO] [stderr]      |
[INFO] [stderr] 4270 | fn recurse_get_smarts<F>(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::BTreeMap`
[INFO] [stderr]     --> src/matcher.rs:9035:9
[INFO] [stderr]      |
[INFO] [stderr] 9035 |     use std::collections::BTreeMap;
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SearchTargetAccess`
[INFO] [stderr]     --> src/matcher.rs:8601:23
[INFO] [stderr]      |
[INFO] [stderr] 8601 |         SearchTarget, SearchTargetAccess, SmartsParseParams, build_prepared_query_match_context,
[INFO] [stderr]      |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `query`
[INFO] [stderr]     --> src/matcher.rs:6879:13
[INFO] [stderr]      |
[INFO] [stderr] 6879 |         let query = query_graph(vec![query_atom.clone()], Vec::new());
[INFO] [stderr]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rings`
[INFO] [stderr]    --> src/query_behavior.rs:549:14
[INFO] [stderr]     |
[INFO] [stderr] 549 |         let (rings, valence) = prepare(&topology);
[INFO] [stderr]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_rings`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `valence`
[INFO] [stderr]    --> src/query_behavior.rs:549:21
[INFO] [stderr]     |
[INFO] [stderr] 549 |         let (rings, valence) = prepare(&topology);
[INFO] [stderr]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_valence`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]      --> src/smarts_write.rs:11023:13
[INFO] [stderr]       |
[INFO] [stderr] 11023 |         let mut query =
[INFO] [stderr]       |             ----^^^^^
[INFO] [stderr]       |             |
[INFO] [stderr]       |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `coordinates`
[INFO] [stderr]    --> src/target.rs:274:13
[INFO] [stderr]     |
[INFO] [stderr] 274 |         let coordinates = CoordinateBlock::default();
[INFO] [stderr]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_coordinates`
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]     --> src/cx_lowering.rs:3887:8
[INFO] [stderr]      |
[INFO] [stderr] 3887 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]     --> src/cx_lowering.rs:3890:8
[INFO] [stderr]      |
[INFO] [stderr] 3890 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `clone_state`, `clone`, `debug_order`, and `core_len` are never used
[INFO] [stderr]     --> src/matcher.rs:2104:8
[INFO] [stderr]      |
[INFO] [stderr] 2023 | impl<'a> Vf2SubState<'a> {
[INFO] [stderr]      | ------------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 2104 |     fn clone_state(&self) -> Self {
[INFO] [stderr]      |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2151 |     fn clone(&self) -> Self {
[INFO] [stderr]      |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2159 |     fn debug_order(&self) -> Option<&[NodeId]> {
[INFO] [stderr]      |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2190 |     fn core_len(&self) -> usize {
[INFO] [stderr]      |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `query_graph_for_test` is never used
[INFO] [stderr]    --> src/smarts_parse.rs:385:4
[INFO] [stderr]     |
[INFO] [stderr] 385 | fn query_graph_for_test(inp: &str) -> Result<QueryGraph, String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:8818:8
[INFO] [stderr]      |
[INFO] [stderr] 8818 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stdout] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stdout] running 699 tests
[INFO] [stderr]     --> src/smarts_parse.rs:8821:8
[INFO] [stderr]      |
[INFO] [stderr] 8821 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout] test cx_lowering::recovery_chem26::query_lookup_fallback_priority_and_outer_guard_preserve_model ... ok
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stdout] test cx_lowering::tests::cx_progress_hierarchy_without_parent_index_uses_cx_parent_id ... ok
[INFO] [stderr] 
[INFO] [stdout] test cx_lowering::tests::cx_progress_linknodes_empty_record_preserves_existing_property ... ok
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stdout] test cx_lowering::tests::cx_progress_linknodes_later_degree_error_keeps_prior_property ... ok
[INFO] [stderr]     --> src/smarts_parse.rs:9352:8
[INFO] [stdout] test cx_lowering::tests::cx_progress_stereo_merge_reconstruction_clears_previous_bonds ... ok
[INFO] [stderr]      |
[INFO] [stdout] test cx_lowering::tests::cx_progress_hierarchy_keeps_prior_child_when_later_child_fails ... ok
[INFO] [stderr] 9352 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout] test cx_lowering::tests::q07e_ring_factories_and_cx_lowering_preserve_i32_targets_and_sentinels ... ok
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9355:8
[INFO] [stderr]      |
[INFO] [stderr] 9355 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9659:8
[INFO] [stderr]      |
[INFO] [stderr] 9659 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9662:8
[INFO] [stderr]      |
[INFO] [stderr] 9662 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stdout] test cx_lowering::tests::lowers_query_constraints_without_concrete_projection ... ok
[INFO] [stderr]     --> src/smarts_parse.rs:9706:8
[INFO] [stdout] test cx_lowering::tests::cx_progress_radicals_source_skips_out_of_range_atom_indices ... ok
[INFO] [stderr]      |
[INFO] [stdout] test cx_lowering::uint_complete_source_condition_cells::uint_cell_unsigned_consumer_search_cxlower_1_cx_lowering ... ok
[INFO] [stderr] 9706 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout] test cx_lowering::tests::cx_progress_bonds_record_lowering_orients_pairs_and_skips_invalid_indices ... ok
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stdout] test cx_lowering::tests::query_sgroups_cx_labels_apply_atomprop_precedence_after_label_records ... ok
[INFO] [stderr] 
[INFO] [stdout] test cx_lowering::tests::query_sgroups_cx_labels_convert_unqueried_dummy_atoms_to_a_query ... ok
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stdout] test cx_lowering::tests::query_sgroups_cx_labels_guard_repeated_processing_until_finish ... ok
[INFO] [stderr]     --> src/smarts_parse.rs:9709:8
[INFO] [stdout] test cx_lowering::uint_complete_source_condition_cells::uint_cell_unsigned_consumer_search_cxlower_0_cx_lowering ... ok
[INFO] [stderr]      |
[INFO] [stdout] test cx_lowering::uint_complete_source_condition_cells::uint_cell_unsigned_consumer_search_cxlower_2147483646_cx_lowering ... ok
[INFO] [stderr] 9709 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stdout] test cx_lowering::tests::cx_progress_hierarchy_skips_unmatched_parent_before_child_range_check ... ok
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stdout] test cx_lowering::tests::cx_progress_linknodes_lowering_preserves_order_and_neighbor_order ... ok
[INFO] [stderr] 
[INFO] [stdout] test cx_lowering::uint_complete_source_condition_cells::uint_cell_unsigned_consumer_search_cxlower_2147483647_cx_lowering ... ok
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stdout] test matcher::dative_endpoint_dispatch_tests::endpoint_virtual_dispatch_uses_explicit_query_instead_of_carrier_identity ... ok
[INFO] [stderr]     --> src/smarts_parse.rs:9865:8
[INFO] [stdout] test matcher::q33_plain_atom_tests::q33_plain_atom_current_identity_reaches_chiral_and_dative_callers ... ok
[INFO] [stderr]      |
[INFO] [stdout] test cx_lowering::tests::query_sgroups_cx_labels_keep_ordinary_names_and_strip_only_pseudo_suffixes ... ok
[INFO] [stderr] 9865 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stdout] test matcher::q66_node_info_comparator_tests::q66_node_info_cmp2_orders_zero_frequency_then_out_then_in ... ok
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stdout] test cx_lowering::tests::cx_progress_hierarchy_maps_source_sequences_to_canonical_groups ... ok
[INFO] [stderr] 
[INFO] [stdout] test cx_lowering::tests::query_sgroups_cx_labels_run_before_dat_and_polymer_group_attachment ... ok
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9868:8
[INFO] [stderr]      |
[INFO] [stderr] 9868 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9921:8
[INFO] [stderr]      |
[INFO] [stderr] 9921 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9924:8
[INFO] [stderr]      |
[INFO] [stderr] 9924 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9993:8
[INFO] [stderr]      |
[INFO] [stderr] 9993 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]     --> src/smarts_parse.rs:9996:8
[INFO] [stderr]      |
[INFO] [stderr] 9996 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]      |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10035:8
[INFO] [stderr]       |
[INFO] [stderr] 10035 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10038:8
[INFO] [stderr]       |
[INFO] [stderr] 10038 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10201:8
[INFO] [stderr]       |
[INFO] [stderr] 10201 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10204:8
[INFO] [stderr]       |
[INFO] [stderr] 10204 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10324:8
[INFO] [stderr]       |
[INFO] [stderr] 10324 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10327:8
[INFO] [stderr]       |
[INFO] [stderr] 10327 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10438:8
[INFO] [stderr]       |
[INFO] [stderr] 10438 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10441:8
[INFO] [stderr]       |
[INFO] [stderr] 10441 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10765:8
[INFO] [stderr]       |
[INFO] [stderr] 10765 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:10768:8
[INFO] [stderr]       |
[INFO] [stderr] 10768 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:11027:8
[INFO] [stderr]       |
[INFO] [stderr] 11027 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:11030:8
[INFO] [stderr]       |
[INFO] [stderr] 11030 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_text` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:11142:8
[INFO] [stderr]       |
[INFO] [stderr] 11142 |     fn fixture_text(value: &cosmolkit_model::PropertyText) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fixture_value` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:11145:8
[INFO] [stderr]       |
[INFO] [stderr] 11145 |     fn fixture_value(value: &cosmolkit_model::PropertyValue) -> &str {
[INFO] [stderr]       |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `bond_prop` is never used
[INFO] [stderr]      --> src/smarts_parse.rs:11160:8
[INFO] [stderr]       |
[INFO] [stderr] 11160 |     fn bond_prop<'a>(graph: &'a QueryGraph, bond_index: usize, key: &str) -> Option<&'a str> {
[INFO] [stderr]       |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> src/matcher.rs:7185:9
[INFO] [stderr]      |
[INFO] [stderr] 7185 |         inner_query.set_prop("_queryRootAtom", "0");
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 7185 |         let _ = inner_query.set_prop("_queryRootAtom", "0");
[INFO] [stderr]      |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `cosmolkit-search` (lib) generated 116 warnings (run `cargo fix --lib -p cosmolkit-search` to apply 8 suggestions)
[INFO] [stderr] warning: `cosmolkit-search` (lib test) generated 120 warnings (79 duplicates) (run `cargo fix --lib -p cosmolkit-search --tests` to apply 6 suggestions)
[INFO] [stderr] warning: unused import: `match_query`
[INFO] [stderr]   --> tests/migration_q_parser.rs:20:43
[INFO] [stderr]    |
[INFO] [stderr] 20 |     SmartsParseParams, SmartsWriteParams, match_query, parse_smarts, write_smarts,
[INFO] [stderr]    |                                           ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> tests/migration_q_parser.rs:2494:5
[INFO] [stderr]      |
[INFO] [stderr] 2494 |     cloned_graph.set_prop("_q23_clone_probe", "detached");
[INFO] [stderr]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 2494 |     let _ = cloned_graph.set_prop("_q23_clone_probe", "detached");
[INFO] [stderr]      |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> tests/migration_q_source_scalar_cleanup.rs:55:13
[INFO] [stderr]    |
[INFO] [stderr] 55 |             missing.atoms_mut()[0].clear_prop("probe");
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 55 |             let _ = missing.atoms_mut()[0].clear_prop("probe");
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> tests/migration_q_match.rs:839:5
[INFO] [stderr]     |
[INFO] [stderr] 839 |     rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 839 |     let _ = rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> tests/migration_q_match.rs:990:5
[INFO] [stderr]     |
[INFO] [stderr] 990 |     rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 990 |     let _ = rooted_inner.set_prop("_queryRootAtom", "1");
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]     --> tests/migration_q_match.rs:1029:5
[INFO] [stderr]      |
[INFO] [stderr] 1029 |     negative_root_inner.set_prop("_queryRootAtom", "-1");
[INFO] [stderr]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1029 |     let _ = negative_root_inner.set_prop("_queryRootAtom", "-1");
[INFO] [stderr]      |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `cosmolkit-search` (test "migration_q_parser") generated 2 warnings (run `cargo fix --test "migration_q_parser" -p cosmolkit-search` to apply 1 suggestion)
[INFO] [stderr] warning: `cosmolkit-search` (test "migration_q_source_scalar_cleanup") generated 1 warning
[INFO] [stderr] warning: `cosmolkit-search` (test "migration_q_match") generated 3 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.08s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/cosmolkit-search/bbf1bd05acf736ab/out/cosmolkit_search-bbf1bd05acf736ab)
[INFO] [stdout] test cx_lowering::tests::query_sgroups_cx_labels_replace_special_query_atoms_and_preserve_typed_state ... ok
[INFO] [stdout] test cx_lowering::uint_complete_source_condition_cells::uint_cell_cx_first_match_cx_lowering ... ok
[INFO] [stdout] test generic_groups::q43_hydrogen_helper_tests::q43_hydrogen_helpers_is_hydrogen_requires_degree_one ... ok
[INFO] [stdout] test matcher::q86_atom_dispatch_tests::q86_atom_dispatch_preserves_override_property_and_post_callback_order ... ok
[INFO] [stdout] test matcher::q86_atom_dispatch_tests::q86_atom_dispatch_uses_current_target_carrier_for_fallbacks ... ok
[INFO] [stdout] test matcher::q33_plain_atom_tests::q33_plain_atom_uses_current_query_and_effective_target_identity ... ok
[INFO] [stdout] test matcher::q86_bond_dispatch_tests::q86_plain_and_explicit_query_bonds_dispatch_different_unspecified_rules ... ok
[INFO] [stdout] test generic_groups::q43_hydrogen_helper_tests::q43_hydrogen_helpers_hplus_uses_exact_charge_without_degree_gate ... ok
[INFO] [stdout] test matcher::q86_bond_dispatch_tests::q86_bond_dispatch_requires_option_and_both_explicit_origins ... ok
[INFO] [stdout] test matcher::q86_bond_dispatch_tests::q86_bond_dispatch_preserves_aromatic_and_current_property_precedence ... ok
[INFO] [stdout] test cx_lowering::uint_complete_source_condition_cells::uint_cell_unsigned_consumer_search_cxlower_2147483648_cx_lowering ... ok
[INFO] [stdout] test matcher::q86_bond_dispatch_tests::q86_bond_dispatch_uses_bond_null_and_source_second_and_relation ... ok
[INFO] [stdout] test cx_lowering::uint_complete_source_condition_cells::uint_cell_unsigned_consumer_search_cxlower_4294967295_cx_lowering ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_accepted_sink_push_precedes_cap_size_read ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_actual_dfs_count_rejects_goals_before_sink_and_matches_list_limits ... ok
[INFO] [stdout] test generic_groups::q43_hydrogen_helper_tests::q43_hydrogen_helpers_d_and_t_use_exact_isotopes_without_degree_gate ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_compiled_count_has_real_empty_and_larger_query_boundaries ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_compiled_count_uniquify_and_finite_caps_preserve_acceptance ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_counter_clear_resize_reserve_and_unsigned_narrowing ... ok
[INFO] [stdout] test matcher::q33_plain_atom_tests::q33_plain_atom_nondefault_charge_isotope_and_radical_constraints_are_asymmetric ... ok
[INFO] [stdout] test matcher::q33_plain_atom_tests::q33_plain_atom_dummy_isotopes_use_nonzero_source_defaults ... ok
[INFO] [stdout] test matcher::q66_node_info_comparator_tests::q66_node_info_cmp1_orders_out_then_in_and_preserves_ties ... ok
[INFO] [stdout] test matcher::q86_atom_dispatch_tests::q86_atom_dispatch_requires_option_and_both_explicit_origins ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_compiled_recursive_count_borrows_existing_graph_plan ... ok
[INFO] [stdout] test matcher::q86_bond_dispatch_tests::q86_plain_bond_dispatch_matches_all_modeled_native_bond_types ... ok
[INFO] [stdout] test matcher::search09_normalizer_tests::search09_cast_before_triangular_product_avoids_source_unsigned32_wrap ... ok
[INFO] [stdout] test matcher::search_shared_perf_s01_tests::search_shared_perf_s01_extraction_writes_literal_prefix_without_allocating ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_native_typed_getter_error_propagates_instead_of_partial_count ... ok
[INFO] [stdout] test matcher::search09_normalizer_tests::search09_finite_distinct_scores_retain_selection_and_sorted_order ... ok
[INFO] [stdout] test matcher::search09_normalizer_tests::search09_zero_one_and_unsigned_max_count_normalizer_is_positive ... ok
[INFO] [stdout] test matcher::search_projection_p01_tests::search_projection_p01_literal_rows_allocations_and_immutability ... ok
[INFO] [stdout] test matcher::search07_count_tests::search07_rejected_final_goals_do_not_consume_accepted_cap ... ok
[INFO] [stdout] test matcher::search09_normalizer_tests::search09_empty_score_is_zero_instead_of_zero_div_zero ... ok
[INFO] [stdout] test matcher::search_shared_perf_s04_tests::search_shared_perf_s04_borrowed_views_match_literal_owners_without_allocation ... ok
[INFO] [stdout] test matcher::search_shared_perf_s02_tests::search_shared_perf_s02_first_match_preserves_literal_callback_order ... ok
[INFO] [stdout] test matcher::source_chiral_atom_compat_complete_tests::source_deprecated_chiral_compat_converts_both_cip_property_values ... ok
[INFO] [stdout] test matcher::source_chiral_atom_compat_complete_tests::source_deprecated_chiral_compat_dispatches_actual_virtual_atom_match ... ok
[INFO] [stdout] test matcher::source_chiral_atom_compat_complete_tests::source_deprecated_chiral_compat_uses_existing_recursive_set_without_preparation ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::disabled_chirality_short_circuits_before_chiral_neighbor_invariants ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::fewer_than_three_query_neighbors_cannot_establish_source_cw_ccw_parity ... ok
[INFO] [stdout] test matcher::search_shared_perf_s07_tests::search_shared_perf_s07_prepared_context_reuses_six_fixed_queries ... ok
[INFO] [stdout] test matcher::search_shared_perf_s08_tests::search_shared_perf_s08_unsupported_leaf_precedes_all_private_routes ... ok
[INFO] [stdout] test matcher::search_shared_perf_s05_tests::search_shared_perf_s05_all_match_uses_borrowed_query_target_views ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::packed_source_mask_preserves_word_boundaries_duplicate_members_and_empty_input ... ok
[INFO] [stdout] test matcher::search_shared_perf_s03_tests::search_shared_perf_s03_limits_order_backtracking_and_reject_allocations ... ok
[INFO] [stdout] test matcher::q86_bond_dispatch_tests::q86_plain_bond_dispatch_keeps_callback_and_property_short_circuits ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::reached_bond_getter_preserves_both_range_checks_before_absence ... ok
[INFO] [stdout] test matcher::search_shared_perf_s05_tests::search_shared_perf_s05_first_match_uses_borrowed_query_target_views ... ok
[INFO] [stdout] test matcher::search_shared_perf_s06_tests::search_shared_perf_s06_canonical_routes_borrow_prepared_graphs ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::source_final_check_accepts_permuted_mapping_and_keeps_duplicate_rejection_atomic ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::source_raw_mapping_order_selects_the_first_chiral_invariant_failure ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::specified_query_matches_unspecified_only_when_the_source_option_is_enabled ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::source_missing_matching_double_bond_is_an_invariant_error ... ok
[INFO] [stdout] test matcher::search08_interrupt_tests::search08_native_first_signal_keeps_prefix_and_next_entry_resets_shared_flag ... ok
[INFO] [stdout] test matcher::search08_interrupt_tests::search08_fake_nested_scope_preserves_entry_flag_and_clears_on_exit ... ok
[INFO] [stdout] test matcher::search08_interrupt_tests::search08_fake_accepted_goal_push_precedes_interrupt_and_cap ... ok
[INFO] [stdout] test matcher::search08_interrupt_tests::search08_fake_next_pair_precedes_flag_and_blocks_feasibility ... ok
[INFO] [stdout] test matcher::search08_interrupt_tests::search08_native_second_signal_uses_default_after_first_checkpoint ... ok
[INFO] [stdout] test matcher::source_insert_if_needed_order_tests::same_target_set_uses_complete_vector_lexical_order_and_exact_return ... ok
[INFO] [stdout] test matcher::source_final_check_complete_tests::source_callback_runs_before_duplicate_lookup_and_receives_raw_target_order ... ok
[INFO] [stdout] test matcher::source_insert_if_needed_order_tests::source_discards_duplicate_targets_and_replaces_only_first_equal_set ... ok
[INFO] [stdout] test matcher::source_match_subqueries_complete_tests::direct_recursive_match_reads_the_set_without_implicitly_preparing_it ... ok
[INFO] [stdout] test matcher::source_match_subqueries_complete_tests::native_plain_carriers_do_not_preflight_or_prepare_placeholder_queries ... ok
[INFO] [stdout] test matcher::source_match_subqueries_complete_tests::recursive_iteration_rejects_uninitialized_and_preserves_initialized_empty_copies ... ok
[INFO] [stdout] test matcher::source_property_compat_complete_tests::all_modeled_source_tags_use_counted_string_comparison ... ok
[INFO] [stdout] test matcher::source_try_to_insert_return_tests::source_limit_equality_blocks_replacement_but_above_limit_still_inserts ... ok
[INFO] [stdout] test matcher::source_recursive_matcher_complete_tests::native_recursive_root_property_is_read_only_after_successful_vf2 ... ok
[INFO] [stdout] test matcher::source_substruct_match_complete_tests::native_atom_getter_error_stops_before_later_candidate_callbacks ... ok
[INFO] [stdout] test matcher::source_substruct_match_complete_tests::native_normal_false_final_check_continues_until_acceptance ... ok
[INFO] [stdout] test matcher::uff_one_fix_result_projection_tests::uff_one_fix_atom_projection_preserves_multiple_hits_and_max_matches ... ok
[INFO] [stdout] test matcher::source_substruct_match_complete_tests::native_final_error_signal_unwinds_vf2_without_publishing_partial_rows ... ok
[INFO] [stdout] test matcher::uff_one_fix_result_projection_tests::uff_one_fix_atom_projection_preserves_recursive_query_results ... ok
[INFO] [stdout] test matcher::uff_one_fix_result_projection_tests::uff_one_fix_atom_projection_preserves_symmetric_hit_order_and_uniqueness ... ok
[INFO] [stdout] test matcher::uint_compat_proposed_tests::proposed_uint_property_compat_uses_source_strings ... ok
[INFO] [stdout] test matcher::uint_complete_source_condition_cells::uint_cell_match_0_matcher ... ok
[INFO] [stdout] test matcher::source_match_subqueries_complete_tests::native_disabled_preparation_reads_existing_recursive_set ... ok
[INFO] [stdout] test matcher::source_match_subqueries_complete_tests::prepared_recursive_iteration_owns_nested_state_and_reprepares_each_target ... ok
[INFO] [stdout] test matcher::source_property_compat_complete_tests::source_presence_names_and_numeric_spellings_remain_distinct ... ok
[INFO] [stdout] test matcher::source_try_to_insert_return_tests::source_duplicate_returns_true_below_limit_for_both_uniquify_modes ... ok
[INFO] [stdout] test matcher::source_recursive_matcher_complete_tests::native_recursive_limits_count_mappings_before_root_deduplication ... ok
[INFO] [stdout] test matcher::uff_one_fix_result_projection_tests::uff_one_fix_atom_projection_preserves_empty_and_no_hit_results ... ok
[INFO] [stdout] test matcher::uint_complete_source_condition_cells::uint_cell_match_2147483646_matcher ... ok
[INFO] [stdout] test matcher::uint_complete_source_condition_cells::uint_cell_match_1_matcher ... ok
[INFO] [stdout] test mcs::final_chiral_bonds_::stereo_label_and_neighbor_match_counts ... ok
[INFO] [stdout] test mcs::final_mapping_::option_gates_and_ring_error_precede_user_hook ... ok
[INFO] [stdout] test mcs::final_ring_fusion_::distinct_query_and_target_vertex_identities_are_preserved ... ok
[INFO] [stdout] test mcs::final_chiral_atoms_::repeated_missing_ligands_and_nonidentity_vertices ... ok
[INFO] [stdout] test mcs::final_chiral_atoms_::mapped_neighbor_permutations_use_tag_parity ... ok
[INFO] [stdout] test mcs::final_chiral_bonds_::missing_query_map_key_and_typed_invariants ... ok
[INFO] [stdout] test mcs::final_chiral_bonds_::source_skip_branches_and_target_orientation ... ok
[INFO] [stdout] test mcs::final_mapping_::mapped_chirality_rejects_before_user_hook ... ok
[INFO] [stdout] test mcs::final_mapping_::initial_seed_suppression_and_growth_restore_checks ... ok
[INFO] [stdout] test mcs::final_ring_pass1_::zero_one_and_multiple_memberships_use_original_bond_ids ... ok
[INFO] [stdout] test mcs::final_ring_fusion_::target_smaller_shortcut_precedes_required_ring_state ... ok
[INFO] [stdout] test matcher::uint_complete_source_condition_cells::uint_cell_match_2147483648_matcher ... ok
[INFO] [stdout] test mcs::final_ring_pass1_::partial_and_nonidentity_mapping_stays_on_mapped_edge ... ok
[INFO] [stdout] test mcs::final_ring_pass1_::reports_missing_state_and_invalid_mapped_edges ... ok
[INFO] [stdout] test mcs::final_ring_refine_::pass2_removes_incomplete_fusion_and_preserves_snapshot ... ok
[INFO] [stdout] test mcs::final_ring_fusion_::neither_one_and_both_molecule_checks_follow_mode ... ok
[INFO] [stdout] test mcs::final_ring_refine_::honor_check_distinguishes_none_all_partial_and_missing_fused ... ok
[INFO] [stdout] test matcher::source_match_subqueries_complete_tests::native_null_recursive_query_is_valid_and_preparation_clears_membership ... ok
[INFO] [stdout] test matcher::source_recursive_matcher_complete_tests::native_plain_recursive_carrier_skips_placeholder_preparation ... ok
[INFO] [stdout] test mcs::final_ring_refine_::pass2_reclassifies_one_survivor_and_retains_two ... ok
[INFO] [stdout] test mcs::final_chiral_atoms_::query_skip_and_target_tag_and_degree_branches ... ok
[INFO] [stdout] test matcher::uint_complete_source_condition_cells::uint_cell_match_4294967295_matcher ... ok
[INFO] [stdout] test mcs::q134_state_::best_and_provenance_survive_later_calls ... ok
[INFO] [stdout] test mcs::q134_state_::store_all_keeps_tie_context_and_source_key_overwrite ... ok
[INFO] [stdout] test matcher::uint_complete_source_condition_cells::uint_cell_match_2147483647_matcher ... ok
[INFO] [stdout] test mcs::q134_state_::objective_and_zero_bond_reset_follow_source ... ok
[INFO] [stdout] test mcs::tests::fmcs01_grow_allows_63_after_real_pruning_and_stops_at_first_composition_callback ... ok
[INFO] [stdout] test mcs::tests::q103_parameter_defaults_and_enum_names_match_source ... ok
[INFO] [stdout] test mcs::tests::q104_any_and_any_heavy_preserve_hydrogen_and_isotope_rules ... ok
[INFO] [stdout] test mcs::tests::fmcs01_grow_rejects_64_and_65_only_after_individual_frontier_attempts ... ok
[INFO] [stdout] test mcs::tests::q104_ring_option_requires_and_uses_detached_ring_assignments ... ok
[INFO] [stdout] test mcs::tests::q105_elements_apply_total_valence_and_charge_only_when_enabled ... ok
[INFO] [stdout] test mcs::tests::fmcs01_grow_prunes_65_to_one_before_limit_and_finishes ... ok
[INFO] [stdout] test mcs::tests::q105_elements_require_carrier_atomic_identity_before_optional_state ... ok
[INFO] [stdout] test mcs::tests::q103_json_updates_exact_source_fields_and_precedence ... ok
[INFO] [stdout] test mcs::tests::q105_valence_option_preserves_missing_and_short_assignment_errors ... ok
[INFO] [stdout] test mcs::tests::q106_isotopes_apply_charge_chirality_distance_and_ring_checks ... ok
[INFO] [stdout] test mcs::tests::q106_isotopes_treat_zero_as_unspecified_and_ignore_element_identity ... ok
[INFO] [stdout] test mcs::tests::q107_chirality_uses_directional_source_mapping_and_option_gate ... ok
[INFO] [stdout] test mcs::tests::q109_order_comparators_apply_prechecks_after_order_match ... ok
[INFO] [stdout] test mcs::tests::q110_double_bond_stereo_preserves_source_enum_mapping ... ok
[INFO] [stdout] test mcs::tests::q103_json_reports_typed_errors_and_retains_prior_source_updates ... ok
[INFO] [stdout] test mcs::tests::q104_any_applies_charge_flag_and_ignores_query_predicate_identity ... ok
[INFO] [stdout] test matcher::search08_interrupt_tests::search08_fake_prefix_list_counter_and_once_warning ... ok
[INFO] [stdout] test matcher::search08_interrupt_tests::search08_fake_typed_exception_transport_skips_post_return_warning ... ok
[INFO] [stdout] test mcs::tests::q107_distance_gate_preserves_missing_coordinate_errors ... ok
[INFO] [stdout] test mcs::tests::q107_distance_uses_first_conformer_mapping_and_inclusive_threshold ... ok
[INFO] [stdout] test mcs::tests::q108_any_bond_applies_ring_membership_only_under_source_gate ... ok
[INFO] [stdout] test mcs::tests::q109_order_and_exact_comparators_distinguish_aromatic_relaxation ... ok
[INFO] [stdout] test mcs::tests::q109_order_matrix_preserves_all_source_equivalences ... ok
[INFO] [stdout] test mcs::tests::q108_any_bond_checks_stereo_before_ring_state ... ok
[INFO] [stdout] test mcs::tests::q108_any_bond_skips_disabled_prechecks_and_complete_only_flag ... ok
[INFO] [stdout] test mcs::tests::q114_match_tables_propagate_comparator_state_errors ... ok
[INFO] [stdout] test mcs::tests::q114a_seed_and_fragment_defaults_match_source_empty_state ... ok
[INFO] [stdout] test mcs::tests::q114a_seed_clone_owns_state_without_fabricating_completion ... ok
[INFO] [stdout] test mcs::tests::q113_input_order_is_stable_and_skips_only_leading_empty_queries ... ok
[INFO] [stdout] test mcs::tests::q110_helper_ignores_option_and_non_double_stereo_as_source_does ... ok
[INFO] [stdout] test mcs::tests::q111_ring_pair_allows_size_difference_on_either_fused_side ... ok
[INFO] [stdout] test mcs::tests::q113_threshold_count_preserves_source_clamping_and_rounding ... ok
[INFO] [stdout] test mcs::tests::q114_match_tables_dispatch_every_completed_comparator ... ok
[INFO] [stdout] test mcs::tests::q115_add_atom_preserves_append_order_and_source_duplicate_mapping ... ok
[INFO] [stdout] test mcs::tests::q111_ring_pair_accepts_equal_sizes_and_rejects_plain_unequal_sizes ... ok
[INFO] [stdout] test mcs::tests::q111_ring_pair_requires_detached_ring_information ... ok
[INFO] [stdout] test mcs::tests::q113_input_order_rejects_empty_single_and_above_one_threshold ... ok
[INFO] [stdout] test mcs::tests::q112_complete_ring_flag_requires_a_compatible_ring_pair ... ok
[INFO] [stdout] test mcs::tests::q112_ring_match_compares_membership_for_both_ring_flag_values ... ok
[INFO] [stdout] test mcs::tests::q116_add_bond_maps_source_endpoints_and_rejects_duplicates ... ok
[INFO] [stdout] test mcs::tests::q114_match_tables_preserve_source_dimensions_and_row_column_lookup ... ok
[INFO] [stdout] test mcs::tests::q118_initial_smarts_seeds_precede_fallback_and_retain_match_order ... ok
[INFO] [stdout] test mcs::tests::q119_seed_key_uses_only_sorted_atom_and_bond_source_state ... ok
[INFO] [stdout] test mcs::tests::q120_frontier_uses_last_added_atom_and_source_adjacency_order_once ... ok
[INFO] [stdout] test mcs::tests::q116_add_bond_preserves_source_mutation_order_on_missing_endpoints ... ok
[INFO] [stdout] test mcs::tests::q116b_frontier_distinguishes_new_and_existing_endpoints_in_source_order ... ok
[INFO] [stdout] test mcs::tests::q116_add_bond_validates_source_and_exclusion_rows_before_mutation ... ok
[INFO] [stdout] test mcs::tests::q116b_frontier_rejects_invalid_source_identity_without_append ... ok
[INFO] [stdout] test mcs::tests::q121_remaining_bound_starts_only_at_last_added_frontier ... ok
[INFO] [stdout] test mcs::tests::q116a_create_from_parent_copies_source_fields_and_resets_growth_boundary ... ok
[INFO] [stdout] test mcs::tests::q117_accumulation_adds_shared_new_atom_once_and_bonds_in_source_order ... ok
[INFO] [stdout] test mcs::tests::q122_biggest_child_defers_then_resumes_source_ordered_combinations ... ok
[INFO] [stdout] test mcs::tests::q119_duplicate_key_sorts_source_ids_and_retains_multiplicity ... ok
[INFO] [stdout] test mcs::tests::q120_complete_ring_gate_eliminates_only_source_rejected_candidates ... ok
[INFO] [stdout] test mcs::tests::q116a_create_from_parent_owns_topology_maps_and_exclusions ... ok
[INFO] [stdout] test mcs::tests::q121_remaining_bound_counts_cycle_bonds_and_atoms_once ... ok
[INFO] [stdout] test mcs::tests::q117_accumulation_preserves_existing_endpoint_and_missing_payload_constraints ... ok
[INFO] [stdout] test mcs::tests::q118_fallback_keeps_source_bond_order_propagates_rejection_and_reports_parse_errors ... ok
[INFO] [stdout] test mcs::tests::q121a_multiple_masks_descend_and_retain_unsigned_long_long_width ... ok
[INFO] [stdout] test mcs::tests::q122_single_extension_finishes_and_store_all_preserves_tie_branch ... ok
[INFO] [stdout] test mcs::tests::q123_complete_ring_growth_restores_fused_options_before_child_match ... ok
[INFO] [stdout] test mcs::tests::q124_complete_ring_helper_precedes_acceptance_and_cancellation_retains_best ... ok
[INFO] [stdout] test mcs::tests::q121a_empty_and_single_masks_preserve_source_termination ... ok
[INFO] [stdout] test mcs::tests::q123_rejected_complete_ring_frontier_finishes_without_partial_mutation ... ok
[INFO] [stdout] test mcs::tests::q128a_preserves_missing_ring_non_ring_endpoint_and_empty_frontier_failures ... ok
[INFO] [stdout] test mcs::tests::q130_elapsed_clock_uses_microseconds_for_the_seconds_timeout ... ok
[INFO] [stdout] test mcs::tests::q129_final_accept_preserves_rejection_and_error_short_circuits ... ok
[INFO] [stdout] test mcs::tests::q124_seed_queue_respects_atom_and_bond_objectives_after_pruning ... ok
[INFO] [stdout] test mcs::tests::q130_progress_callback_error_follows_count_update ... ok
[INFO] [stdout] test mcs::tests::q124_store_all_retains_ties_and_query_bound_stops_after_progress ... ok
[INFO] [stdout] test mcs::tests::q128a_uses_first_ring_membership_connected_order_and_relaxed_fusion_flags ... ok
[INFO] [stdout] test mcs::tests::q125_target_match_maps_query_rows_to_exact_target_identities ... ok
[INFO] [stdout] test mcs::tests::q125_target_match_retains_not_set_for_unmatched_query_rows_and_bonds ... ok
[INFO] [stdout] test mcs::tests::q129_final_accept_uses_source_option_gates_and_check_order ... ok
[INFO] [stdout] test mcs::tests::q127_incremental_reuse_extends_new_atom_and_old_atom_closure_state ... ok
[INFO] [stdout] test mcs::tests::q128_acceptance_applies_threshold_and_final_check_before_queue_insert ... ok
[INFO] [stdout] test mcs::tests::q130_timeout_is_disabled_at_zero_and_inclusive_at_deadline ... ok
[INFO] [stdout] test mcs::tests::q131_result_query_distinguishes_partial_ring_and_nonring_rows ... ok
[INFO] [stdout] test mcs::tests::q127_incremental_rejection_clears_cache_then_uses_source_full_fallback ... ok
[INFO] [stdout] test mcs::tests::q130_native_timeout_retains_exact_partial_state_without_callback ... ok
[INFO] [stdout] test mcs::tests::q126_full_match_requires_exact_topology_and_match_table_feasibility ... ok
[INFO] [stdout] test query_behavior::atom_mass_tests::query_atom_mass_applies_the_source_multiplier_and_rounding ... ok
[INFO] [stdout] test query_behavior::atom_mass_tests::rdkit_atom_mass_covers_absent_known_missing_and_dummy_isotopes ... ok
[INFO] [stdout] test query_behavior::atom_mass_tests::replacement_call_path_uses_rdkit_mass_before_building_the_query_leaf ... ok
[INFO] [stdout] test mcs::tests::q134_rectangular_tables_keep_zero_dimensions_and_first_typed_error ... ok
[INFO] [stdout] test mcs::tests::q131_result_query_preserves_isotope_and_complete_ring_predicates ... ok
[INFO] [stdout] test mcs::tests::q128_seed_queue_orders_descending_bonds_and_retains_equal_insertion_order ... ok
[INFO] [stdout] test mcs::tests::q132_result_smarts_uses_remapped_query_graph_and_canonical_writer ... ok
[INFO] [stdout] test query_behavior::descriptor_topology_context_tests::explicit_model_audit_rejects_malformed_topology ... ok
[INFO] [stdout] test query_behavior::concrete_query_identity_tests::source_query_complexity_distinguishes_same_order_carrier_and_explicit_identity ... ok
[INFO] [stdout] test mcs::tests::q134_rectangular_tables_preserve_query_rows_target_columns_and_comparators ... ok
[INFO] [stdout] test query_behavior::descriptor_hbd_context_tests::explicit_model_audit_preserves_borrowed_valence ... ok
[INFO] [stdout] test query_behavior::descriptor_topology_context_tests::descriptor_topology_context_borrows_adjacency_and_omits_chemistry ... ok
[INFO] [stdout] test mcs::tests::q134_table_comparison_retains_source_directional_chirality_gate ... ok
[INFO] [stdout] test mcs::tests::q131_result_query_renumbers_fragment_rows_and_collects_target_alternatives ... ok
[INFO] [stdout] test query_behavior::atom_mass_tests::mass_predicate_call_path_uses_missing_and_dummy_fallbacks ... ok
[INFO] [stdout] test query_behavior::prepared_query_context_tests::explicit_model_audit_preserves_topology_error_source ... ok
[INFO] [stdout] test query_behavior::descriptor_hbd_context_tests::descriptor_hbd_context_rejects_malformed_valence_rows ... ok
[INFO] [stdout] test query_behavior::descriptor_hbd_context_tests::descriptor_hbd_context_borrows_adjacency_and_valence ... ok
[INFO] [stdout] test query_behavior::prepared_query_context_tests::prepared_query_context_rejects_both_valence_field_lengths ... ok
[INFO] [stdout] test query_behavior::prepared_query_context_tests::original_smarts_ring_context_without_cached_valence ... ok
[INFO] [stdout] test query_behavior::prepared_query_context_tests::prepared_query_context_borrows_every_input_and_keeps_cold_ownership ... ok
[INFO] [stdout] test query_behavior::q41_query_query_tests::q41_query_query_dispatch_uses_origin_and_current_bond_carrier ... ok
[INFO] [stdout] test mcs::tests::q133_seed_reconstruction_returns_none_for_source_no_match ... ok
[INFO] [stdout] test query_behavior::q41_query_query_tests::q41_query_query_preserves_null_composite_order_and_bond_second_and ... ok
[INFO] [stdout] test mcs::tests::q133_seed_reconstruction_switches_to_new_query_row_identities ... ok
[INFO] [stdout] test query_behavior::q41_query_query_tests::q41_query_query_matches_all_six_equality_descriptions_and_order_values ... ok
[INFO] [stdout] test mcs::tests::q126_full_match_uses_source_target_order_and_threshold_stops ... ok
[INFO] [stdout] test query_behavior::q40_query_query_tests::q40_query_query_dispatch_uses_origin_and_current_carrier_identity ... ok
[INFO] [stdout] test query_behavior::q40_query_query_tests::q40_query_query_matches_every_source_equality_description_and_leaf_negation ... ok
[INFO] [stdout] test query_behavior::q40_query_query_tests::q40_query_query_preserves_null_composite_order_and_source_defaults ... ok
[INFO] [stdout] test query_behavior::q40_query_query_tests::q40_query_query_uses_source_inequality_for_unequal_whitelisted_values ... ok
[INFO] [stdout] test query_behavior::prepared_query_context_tests::prepared_query_context_matches_ethane_and_ethanol_through_existing_matcher ... ok
[INFO] [stdout] test query_behavior::prepared_query_context_tests::prepared_query_context_rejects_ring_membership_dimensions ... ok
[INFO] [stdout] test query_behavior::q41_query_query_tests::q41_query_query_preserves_source_integer_relation_across_leaf_descriptions ... ok
[INFO] [stdout] test query_cx_composition::check_cx_features_source_tests::empty_present_link_node_string_still_warns ... ok
[INFO] [stdout] test query_behavior::prepared_query_context_tests::prepared_query_context_reuses_context_through_nested_recursive_smarts ... ok
[INFO] [stdout] test query_cx_composition::check_cx_features_source_tests::typed_parent_projection_is_the_same_source_presence_fact ... ok
[INFO] [stdout] test query_cx_composition::check_cx_features_source_tests::several_parent_properties_emit_one_warning ... ok
[INFO] [stdout] test query_cx_composition::source_insert_mol_complete_tests::source_equal_counts_pair_by_append_position_and_keep_existing_ids_flags_properties ... ok
[INFO] [stdout] test query_cx_composition::source_insert_mol_complete_tests::source_new_conformers_copy_all_ids_flags_and_positions_but_not_input_properties ... ok
[INFO] [stdout] test query_cx_composition::check_cx_features_source_tests::link_warning_precedes_hierarchy_and_preserves_binary_payload ... ok
[INFO] [stdout] test query_cx_composition::check_cx_features_source_tests::every_modeled_link_node_tag_uses_source_string_projection ... ok
[INFO] [stdout] test query_cx_composition::check_cx_features_source_tests::missing_properties_emit_no_warning_and_keep_graph_unchanged ... ok
[INFO] [stdout] test query_cx_composition::check_cx_features_source_tests::parent_warning_tests_presence_without_numeric_conversion ... ok
[INFO] [stdout] test query_cx_composition::source_insert_mol_complete_tests::source_different_or_zero_counts_keep_zero_extensions_without_choosing_an_input_frame ... ok
[INFO] [stdout] test query_cx_composition::source_insert_mol_complete_tests::source_property_failure_retains_appended_rows_and_prior_zero_writes_before_coordinate_reader ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::final_single_writer_emits_atom_label_and_acquires_actual_ring_cache ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::all_template_presence_checks_precede_first_insertion_property_read ... ok
[INFO] [stderr] unrecognized rb value: 1
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::flags_off_still_insert_all_mixed_conformers_and_duplicate_ids ... ok
[INFO] [stderr] unrecognized rb value: 1
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::empty_templates_record_both_computed_names_and_reach_final_writer ... ok
[INFO] [stdout] test smarts_parse::cx_progress_attachments_tests::cx_progress_attachments_keep_prior_rows_and_reject_later_source_degree ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::forward_offsets_keep_repetitions_and_source_graphs_unchanged ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::native_add_conformer_keeps_nonfinite_and_duplicate_id_values ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::insertion_errors_precede_order_value_cast_after_presence_preflight ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::unequal_counts_only_extend_existing_frames_with_zero_positions ... ok
[INFO] [stdout] test smarts_parse::cx_progress_attachments_tests::cx_progress_attachments_skip_invalid_atoms_and_keep_empty_endpoint_count ... ok
[INFO] [stdout] test smarts_parse::cx_progress_bond_tests::cx_progress_bonds_applies_kinds_orients_pairs_and_skips_out_of_graph_indices ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::local_out_of_range_rows_may_resolve_to_actual_other_template_atoms ... ok
[INFO] [stdout] test smarts_parse::cx_progress_coordinate_tests::cx_progress_coordinates_retains_committed_rows_and_pads_graph_atoms ... ok
[INFO] [stdout] test smarts_parse::cx_progress_constraints_tests::cx_progress_constraints_apply_query_scan_and_skip_source_invalid_atoms ... ok
[INFO] [stdout] test smarts_parse::cx_progress_label_tests::query_sgroups_cx_progress_keeps_special_label_unprocessed_until_block_completion ... ok
[INFO] [stdout] test smarts_parse::cx_progress_label_tests::query_sgroups_cx_progress_labels_replace_atom_and_preserve_existing_groups ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::equal_counts_pair_by_position_keep_first_ids_and_flags ... ok
[INFO] [stdout] test smarts_parse::cx_progress_constraints_tests::cx_progress_constraints_recognizes_malformed_empty_substitution_without_effect ... ok
[INFO] [stdout] test query_cx_composition::source_insert_mol_complete_tests::source_ring_reference_writes_wrap_unsigned_and_shift_stereo_and_group_rows ... ok
[INFO] [stdout] test smarts_parse::cx_progress_constraints_tests::cx_progress_constraints_keep_prior_items_before_later_failure ... ok
[INFO] [stdout] test smarts_parse::cx_progress_label_tests::cx_progress_labels_apply_items_before_a_missing_closing_delimiter ... ok
[INFO] [stdout] test smarts_parse::cx_progress_attachments_tests::cx_progress_attachments_direct_and_progress_preserve_source_values ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::final_flags_decide_if_invalid_bond_order_is_actually_read ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_polymer_tests::cx_progress_polymer_direct_and_progress_preserve_typed_order_and_ids ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_linknodes_tests::cx_progress_linknodes_direct_and_progress_lowering_match_source_property ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_polymer_tests::cx_progress_polymer_skip_and_error_follow_source_commit_order ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_coordinate_tests::cx_progress_coordinates_projects_complete_rows_to_graph_atom_count ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_linknodes_tests::cx_progress_linknodes_commits_complete_helper_before_missing_pipe ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_linknodes_tests::cx_progress_linknodes_degree_error_preserves_existing_property ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_sgroups_tests::cx_progress_hierarchy_direct_and_progress_paths_preserve_source_identity ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_radical_tests::cx_progress_radicals_keeps_prior_effect_after_later_parse_failure ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_polymer_tests::cx_progress_polymer_commits_completed_group_before_later_or_outer_failure ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_polymer_tests::cx_progress_polymer_maps_all_source_types_and_keeps_skipped_sequence_ids ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_polymer_tests::cx_progress_polymer_partial_syntax_has_no_search_effect ... ok
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stderr] unrecognized CXSMILES CONNECT value: 'EU'. Assuming 'eu'
[INFO] [stdout] test smarts_parse::cx_progress_sgroups_tests::cx_progress_hierarchy_keeps_prior_mutation_after_later_syntax_error ... ok
[INFO] [stdout] test smarts_parse::cx_progress_sgroups_tests::cx_progress_sgroups_commit_completed_helper_before_missing_outer_pipe ... ok
[INFO] [stdout] test smarts_parse::cx_progress_sgroups_tests::cx_progress_sgroups_direct_and_progress_lowering_keep_source_and_storage_ids ... ok
[INFO] [stdout] test smarts_parse::cx_progress_sgroups_tests::cx_progress_sgroups_failure_before_complete_has_no_search_effect ... ok
[INFO] [stdout] test smarts_parse::cx_progress_stereo_merge_tests::cx_progress_second_stereo_session_reports_native_tracker_invariant ... ok
[INFO] [stdout] test smarts_parse::cx_progress_stereo_merge_tests::cx_progress_stereo_keeps_completed_group_before_later_index_failure ... ok
[INFO] [stdout] test smarts_parse::original_smarts_boundary_regressions::original_smarts_grammar_permutation_transfer ... ok
[INFO] [stderr] BOND NOT FOUND! 0 involving atom 2
[INFO] [stdout] test smarts_parse::cx_progress_properties_tests::cx_progress_properties_keeps_prior_item_after_later_parse_failure ... ok
[INFO] [stdout] test smarts_parse::original_smarts_boundary_regressions::original_smarts_recursive_mol_keeps_raw_chirality ... ok
[INFO] [stdout] test smarts_parse::cx_progress_sgroups_tests::cx_progress_hierarchy_keeps_prior_mutation_after_lowering_error ... ok
[INFO] [stdout] test smarts_parse::cx_progress_stereo_merge_tests::cx_progress_stereo_merge_matches_both_consumers_and_source_order ... ok
[INFO] [stdout] test smarts_parse::cx_progress_radical_tests::cx_progress_radicals_applies_electron_classes_and_skips_invalid_atoms ... ok
[INFO] [stdout] test smarts_parse::cx_progress_stereo_merge_tests::cx_progress_stereo_commits_completed_helper_before_missing_pipe ... ok
[INFO] [stdout] test query_cx_composition::vector_cx_composition_source_tests::unsigned_offset_wraps_before_final_global_access ... ok
[INFO] [stdout] test smarts_parse::q03_setup_tests::q03_ascii_multichar_and_bracket_spans_keep_their_coordinate_origins ... ok
[INFO] [stdout] test smarts_parse::cx_progress_properties_tests::cx_progress_properties_applies_items_and_skips_out_of_graph_indices ... ok
[INFO] [stdout] test smarts_parse::cx_progress_directions_tests::cx_progress_directions_direct_and_progress_preserve_effects ... ok
[INFO] [stdout] test smarts_parse::cx_progress_directions_tests::cx_progress_directions_keeps_prior_effects_on_parse_and_target_failures ... ok
[INFO] [stdout] test smarts_parse::cx_progress_bond_tests::cx_progress_bonds_keeps_prior_effects_before_syntax_or_target_failure ... ok
[INFO] [stdout] test smarts_parse::q03_setup_tests::q03_bad_character_dispatch_uses_existing_atom_and_bond_starts ... ok
[INFO] [stdout] test smarts_parse::cx_progress_linknodes_tests::cx_progress_linknodes_does_not_commit_a_partial_helper ... ok
[INFO] [stdout] test smarts_parse::cx_progress_sgroups_tests::cx_progress_sgroups_attach_before_later_failure_after_source_label_processing ... ok
[INFO] [stdout] test smarts_parse::q03_setup_tests::q03_setup_window_matches_signed_plain_char_trim_and_terminal_read ... ok
[INFO] [stdout] test smarts_parse::q03_setup_tests::q03_dispatch_tokens_keep_source_consumption_positions ... ok
[INFO] [stdout] test smarts_parse::q03_setup_tests::q03_scanner_keeps_trimmed_window_in_original_character_coordinates ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::carrier_referencing_a_removed_target_fails_loudly ... ok
[INFO] [stdout] test mcs::tests::q130_progress_updates_best_before_callback_and_preserves_partial_result ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::query_sgroups_hydrogen_deletion_cascades_parents_and_compacts_ids ... ok
[INFO] [stdout] test smarts_parse::smarts_source_state_tests::querybond_normalization_replaces_composite_or_negated_predicate ... ok
[INFO] [stdout] test smarts_parse::smarts_source_state_tests::ring_closure_base_setter_preserves_directional_query ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::failed_merge_leaves_the_in_place_graph_unchanged ... ok
[INFO] [stdout] test smarts_parse::recovery_chem29_query::earlier_tracker_failure_preempts_later_duplicate_and_keeps_initial_groups ... ok
[INFO] [stdout] test smarts_parse::q03_setup_tests::q03_trimmed_tokens_keep_original_character_and_parser_byte_offsets ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::carrier_referencing_a_later_surviving_atom_is_remapped ... ok
[INFO] [stdout] test smarts_parse::source_complete_smarts_composition_tests::source_direction_clear_errors_propagate_before_any_bond_changes ... ok
[INFO] [stdout] test smarts_parse::source_complete_smarts_composition_tests::source_h_token_in_an_expression_is_a_count_query_and_reaches_recursion ... ok
[INFO] [stdout] test smarts_parse::source_complete_smarts_composition_tests::source_non_hydrogen_recursive_rows_reach_the_same_hydrogen_owner ... ok
[INFO] [stderr] Atom 1 appears more than once in stereo group specification!
[INFO] [stdout] test smarts_parse::source_complete_smarts_composition_tests::each_source_expand_query_call_retains_its_own_nested_and_node ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::merge_query_hydrogens_match_map_presence_and_isotope_flags ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::merge_without_attachments_keeps_the_source_predicate_expansion ... ok
[INFO] [stdout] test smarts_parse::recovery_chem29_query::lax_failure_preserves_completed_prefix_target_and_exact_consumed_text ... ok
[INFO] [stdout] test smarts_parse::source_complete_smarts_composition_tests::missing_recursive_source_graph_is_a_structural_error ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::ordered_attachment_labels_are_preserved_through_renumbering ... ok
[INFO] [stdout] test smarts_parse::source_complete_smarts_composition_tests::source_direction_postprocessing_sets_carriers_before_cis_trans_and_names_last ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::parse_smarts_merges_plain_query_hydrogens ... ok
[INFO] [stdout] test smarts_parse::source_complete_smarts_composition_tests::source_query_hydrogen_guard_skips_recursive_merging_for_retained_hydrogen_rows ... ok
[INFO] [stdout] test smarts_parse::query_hydrogen_merge_tests::query_sgroups_hydrogen_remap_preserves_typed_references_and_all_graph_state ... ok
[INFO] [stdout] test smarts_parse::uint_complete_source_condition_cells::uint_cell_counter_1_smarts_parse ... ok
[INFO] [stdout] test smarts_parse::uint_complete_source_condition_cells::uint_cell_counter_2147483646_smarts_parse ... ok
[INFO] [stdout] test smarts_parse::uint_complete_source_condition_cells::uint_cell_counter_0_smarts_parse ... ok
[INFO] [stdout] test smarts_parse::cx_progress_label_tests::cx_progress_labels_and_values_apply_written_slots_and_decoded_text ... ok
[INFO] [stdout] test smarts_write::append_cx_source_tests::binary_input_remains_counted_and_unescaped ... ok
[INFO] [stdout] test smarts_write::append_cx_source_tests::successive_appends_share_ordinary_owner_and_keep_literal_punctuation ... ok
[INFO] [stdout] test smarts_write::append_cx_source_tests::separator_depends_only_on_base_byte_length ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::other_attach_point_values_reach_ordinary_label ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::semicolons_only_clear_but_empty_positions_and_delimiters_are_preserved ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::zero_identity_bad_attach_point_errors_before_ordinary_label ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::unknown_dummy_label_falls_through_to_source_attach_points ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::recognized_pseudoatom_short_circuits_bad_attach_point ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::source_atom_access_is_structurally_checked ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::empty_order_returns_empty ... ok
[INFO] [stdout] test smarts_parse::uint_counter_proposed_tests::proposed_uint_source_counter_preserves_unsigned_postincrement ... ok
[INFO] [stdout] test smarts_write::append_cx_source_tests::empty_addition_never_changes_any_base ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::nonzero_identity_skips_bad_attach_point_conversion ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::scalar_reads_reuse_canonical_source_conversion_and_unescaped_quote ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::generic_label_presence_wins_even_when_empty_and_keeps_binary ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::supplied_property_is_not_hardcoded_to_molfilevalue ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::atrop_flip_uses_axial_order_and_only_opposite_side_carrier_order ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::repeated_first_atom_is_separated_by_position ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::can_have_direction_gate_precedes_cfg_read_and_keeps_aromatic ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::atrop_only_early_and_final_gates_skip_cfg_and_non_atrop_unknown ... ok
[INFO] [stdout] test smarts_parse::uint_complete_source_condition_cells::uint_cell_counter_2147483647_smarts_parse ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::only_source_pseudoatoms_and_zero_actual_identity_get_suffix ... ok
[INFO] [stdout] test smarts_parse::uint_complete_source_condition_cells::uint_cell_counter_2147483648_smarts_parse ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::cfg_wedge_does_not_repeat_the_earlier_atrop_detection ... ok
[INFO] [stdout] test smarts_parse::uint_complete_source_condition_cells::uint_cell_counter_4294967295_smarts_parse ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::coordinate_molfile_child_uses_literal_code_three_switch ... ok
[INFO] [stdout] test smarts_write::atom_labels_source_tests::duplicate_first_atom_uses_source_identity_delimiter_comparison ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::shared_atrop_map_retains_source_mutated_endpoint_and_direction_without_graph_clone ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::source_uint_cfg_requires_conformer_only_after_none_and_preserves_bad_cast ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::empty_order_does_not_eagerly_read_missing_conformer ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::atomic_number_symbol_suppression_is_presence_only_and_preserves_incoming_brackets ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::counted_binary_key_and_value_remain_independent ... ok
[INFO] [stdout] test smarts_write::atom_properties_consumer_source_tests::enclosing_cx_writer_uses_canonical_properties_and_preserves_structural_errors ... ok
[INFO] [stderr] Atom 0 appears more than once in stereo group specification!
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::dedicated_comparison_variants_retain_literal_source_less_greater_tokens ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::formal_charge_sign_unit_magnitude_and_source_undefined_abs_boundary_are_explicit ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::hybridization_mass_and_isotope_follow_source_scalar_switch_and_mass_projection ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::known_native_unknown_leaf_descriptions_use_literal_source_warning_fallback_and_keep_bracket_state ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::explicit_direction_precedes_bad_cfg_and_unreached_conformer ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::non_tetrahedral_tags_mark_stereo_before_switch_even_when_they_emit_no_token ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::organic_atom_types_leave_bracket_state_unchanged_and_nonorganic_force_it ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::scalar_descriptions_have_exact_tokens_values_and_bracket_assignments ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::source_atom_type_encoding_threshold_and_periodic_table_errors_are_not_unsupported ... ok
[INFO] [stdout] test smarts_parse::recovery_chem29_query::strict_same_record_and_cross_record_have_distinct_source_error_kinds ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::tetrahedral_emission_uses_source_property_presence_and_does_not_convert_marker_values ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::lexical_group_order_and_output_bond_positions_are_source_defined ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::ranges_preserve_signed_bounds_openness_independence_and_equality_base_charge_signs ... ok
[INFO] [stdout] test smarts_write::complete_atom_smarts_simple_source_tests::unsigned_degree_storage_projects_source_signed_int_values_at_writer_boundary ... ok
[INFO] [stdout] test smarts_write::complete_basic_bond_repr_source_tests::dative_projection_and_left_right_orientation_follow_all_guards ... ok
[INFO] [stdout] test smarts_write::complete_basic_bond_repr_source_tests::irrelevant_options_and_reverse_flag_do_not_change_other_source_types ... ok
[INFO] [stdout] test smarts_write::complete_basic_bond_repr_source_tests::only_single_and_aromatic_types_use_source_end_direction_tokens ... ok
[INFO] [stdout] test smarts_write::complete_basic_bond_repr_source_tests::pinned_bond_type_table_including_source_empty_default ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::arbitrary_order_vectors_are_not_guessed_sorted_or_deduplicated ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::direction_query_uses_its_value_and_source_rejects_all_other_directions ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::known_source_unwritable_queries_preserve_native_description_errors ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::literal_null_ring_and_canonical_multi_order_queries_follow_source_tokens ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::order_query_uses_query_value_and_source_endpoint_orientation ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::missing_atrop_carrier_errors_only_when_coordinate_free_flip_is_reached ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::single_or_aromatic_reads_carrier_direction_without_isomeric_guard ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::source_width_checks_follow_actual_order_branch_and_left_short_circuit ... ok
[INFO] [stdout] test smarts_write::complete_combine_child_smarts_source_tests::empty_children_suppress_separator_but_keep_feature_effects ... ok
[INFO] [stdout] test smarts_write::complete_combine_child_smarts_source_tests::exact_description_first_occurrence_and_or_priority ... ok
[INFO] [stdout] test smarts_write::complete_combine_child_smarts_source_tests::incoming_flags_do_not_choose_separator_or_cause_rejection ... ok
[INFO] [stdout] test smarts_write::complete_combine_child_smarts_source_tests::nonsmartable_or_rejects_before_empty_child_and_feature_updates ... ok
[INFO] [stdout] test smarts_write::complete_combine_child_smarts_source_tests::output_bytes_are_preserved_without_parsing_or_deduplication ... ok
[INFO] [stdout] test smarts_write::complete_combine_child_smarts_source_tests::source_feature_words_and_connectives_cover_all_flag_pairs ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::empty_order_does_not_access_atoms_or_properties ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::atom_preflight_error_precedes_cleanup_and_cache_acquisition ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::atrop_only_acquires_sssr_but_does_not_emit_ring_cis_trans ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::bond_cfg_initializes_actual_sssr_before_ring_extension ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::cache_getter_error_retains_ring_acquisition_and_skips_final_cleanup ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::enclosing_presence_preflight_emits_empty_values_only_when_present ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::invalid_atom_order_is_a_structured_source_access_failure ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::unknown_cache_transport_is_not_read_with_unrelated_flags ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::all_signed_byte_charges_follow_literal_source_formatting ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::existing_wedge_direction_write_without_new_map_entry_is_retained ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::first_duplicate_and_missing_atom_use_native_find_end_distance ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::flags_off_clear_actual_molecule_counter_without_acquiring_rings ... ok
[INFO] [stdout] test smarts_write::atom_values_source_tests::absent_and_empty_values_preserve_all_position_separators ... ok
[INFO] [stdout] test smarts_write::bond_config_source_tests::first_axial_neighbor_wins_without_probing_later_invalid_carriers ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::bond_cfg_takes_precedence_over_atrop_only_and_uses_selected_source_coords ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::initialized_empty_sssr_is_trusted_without_rebuilding_cycle ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::later_output_order_error_preserves_earlier_bond_and_cache_writes ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::complete_output_order_is_isotope_symbol_stereo_h_charge_map ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::sgroup_counter_and_group_cleanup_are_installed_on_actual_query ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::every_element_uses_source_atomic_number_or_element_symbol_in_brackets ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::sgroup_hierarchy_error_retains_source_counter_and_group_prefix_writes ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::source_stereo_and_explicit_hydrogen_rule_for_all_tags ... ok
[INFO] [stdout] test smarts_write::complete_non_query_bond_smarts_source_tests::nonaromatic_source_dative_orientation_and_projection_are_shared ... ok
[INFO] [stdout] test smarts_write::complete_non_query_bond_smarts_source_tests::helper_does_not_dispatch_query_or_owner_properties_and_never_mutates_input ... ok
[INFO] [stdout] test smarts_write::complete_non_query_bond_smarts_source_tests::source_aromatic_directions_require_isomeric_output_regardless_of_stored_order ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::authoritative_typed_map_precedes_raw_map_without_signed_conversion ... ok
[INFO] [stdout] test smarts_write::complete_non_query_bond_smarts_source_tests::width_errors_and_missing_left_follow_actual_source_short_circuits ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::bare_recursive_query_wraps_actual_empty_molecule_and_own_negation ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::composite_dispatch_uses_own_flag_and_source_child_order ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::missing_recursive_molecule_does_not_use_cached_text_or_ordinary_atom ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::isotope_precedes_symbol_and_zero_is_not_written ... ok
[INFO] [stdout] test smarts_write::complete_cx_source_tests::shared_atrop_map_reaches_enhanced_stereo_and_actual_bond_writes ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::map_conversion_failure_retains_prior_stereo_marker_but_inputs_remain_immutable ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::net_leaf_negation_controls_prefix_and_forced_brackets ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::source_defined_unknown_leaf_fallback_remains_distinct_from_unmodeled_identity ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::raw_map_string_conversion_covers_all_scalar_source_kinds ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::query_leaf_stereo_is_written_once_and_does_not_copy_ordinary_h_rule ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::existing_projection_can_hide_both_raw_and_typed_map_properties ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::leaf_source_brackets_are_determined_by_actual_leaf_writer ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::canonical_carrier_constructor_preserves_an_actual_incoming_query ... ok
[INFO] [stdout] test smarts_write::complete_non_query_bond_smarts_source_tests::aromatic_flag_overrides_all_stored_orders_before_endpoint_reads ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::successful_and_failed_writes_leave_all_represented_atom_state_immutable ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::source_symbol_prefix_handles_empty_leaf_result_before_and_after_map ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::explicit_order_dispatch_uses_query_value_for_every_source_type ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::symbol_property_uses_source_string_conversion_and_empty_string_presence ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::known_source_writer_errors_are_not_hidden_by_carrier_or_generic_fallback ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::ordinary_origin_returns_before_reading_the_uniform_storage_predicate ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::actual_source_params_are_forwarded_for_simple_and_ordinary_branches ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::origin_and_source_aromatic_branch_determine_whether_left_index_is_read ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::own_negation_cancels_and_keeps_literal_prefix_for_an_empty_leaf ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::atom_to_left_and_all_output_options_reach_actual_child_writers ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::both_composites_keep_feature_words_even_when_first_text_is_overwritten ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::map_property_is_read_as_signed_int_and_typed_slot_has_precedence ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::child_error_order_and_failed_combine_leave_outer_features_unchanged ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::exact_binary_child_count_is_checked_before_any_child_dispatch ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::raw_presence_guards_and_existing_scratch_prevent_stereo_and_h ... ok
[INFO] [stdout] test smarts_write::complete_non_query_atom_smarts_source_tests::symbol_override_preserves_raw_bytes_and_dummy_label_is_unreached ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::second_composite_overwrites_first_text_exactly_as_pinned_source ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::map_and_symbol_raw_bytes_are_retained_in_source_output_order ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::source_binary_connectives_and_parent_negation_preserve_feature_words ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::source_composite_flag_and_second_composite_overwrite_reach_public_dispatch ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::successful_and_failed_dispatch_do_not_mutate_origin_payload_or_carrier ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::child_negation_flags_and_nested_not_projection_preserve_order ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::de_morgan_switches_connective_and_xors_each_simple_child ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::malformed_composites_are_structural_errors_before_any_child_writer ... ok
[INFO] [stdout] test smarts_write::complete_query_bond_smarts_source_tests::malformed_source_composites_fail_before_any_leaf_or_endpoint_read ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::first_child_word_stays_fixed_instead_of_becoming_aggregate_output_features ... ok
[INFO] [stdout] test smarts_write::complete_bond_smarts_simple_source_tests::represented_inputs_and_unreached_properties_are_not_mutated_or_interpreted ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::negation_is_exactly_one_prefix_even_if_nested_smarts_has_its_own_negation ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::represented_graph_properties_and_all_query_inputs_are_immutable ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::serial_membership_and_source_provenance_do_not_replace_actual_query_graph ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::source_std_string_wrapping_preserves_nul_and_non_utf8_bytes ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::only_first_child_uses_original_and_symbol_permission ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::writer_borrows_exact_query_and_all_parameter_fields_once_before_wrapping ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::writer_error_propagates_unchanged_with_one_call_and_no_cached_text_fallback ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::actual_conformer_with_empty_order_returns_empty_string ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::coordinate_range_errors_propagate_from_canonical_owner ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::recursion_feature_effect_occurs_after_writer_success_and_before_later_error ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::recursive_callbacks_follow_child_order_forward_options_and_keep_graphs_immutable ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::recursive_children_ignore_parent_negation_but_keep_their_own_flag ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::enclosing_count_guard_owns_no_conformer_skip_and_empty_order_parentheses ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::missing_conformer_errors_before_even_empty_or_invalid_atom_order ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::mixed_dimensions_follow_actual_front_not_id_or_three_d_preference ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::mixed_missing_source_order_remains_a_structural_error ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::nonfinite_values_keep_source_case_sign_and_original_storage_bits ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::three_column_storage_does_not_override_actual_is3d_flag ... ok
[INFO] [stdout] test smarts_write::complete_query_atom_smarts_source_tests::independent_xor_and_malformed_composite_remain_explicit_errors ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::empty_graph_is_distinct_from_null_and_still_calls_canonical_writer ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::source_own_negation_and_not_chain_projection_do_not_reorder_children ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::source_second_child_feature_word_persists_across_all_later_siblings ... ok
[INFO] [stdout] test smarts_write::complete_recursive_structure_smarts_source_tests::missing_inner_graph_errors_before_writer_even_if_cached_source_text_exists ... ok
[INFO] [stdout] test smarts_write::complete_recurse_bond_smarts_source_tests::tree_and_bond_inputs_are_immutable_including_error_paths_and_empty_tokens ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::output_order_repeats_positions_without_mutating_input ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::bad_counter_precedes_invalid_reverse_order_and_group_write ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::data_then_polymer_share_actual_counter_and_hierarchy_indexes ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::empty_groups_return_before_bad_counter_and_reverse_access ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::generic_dat_is_actual_source_type ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::z_is_omitted_by_formatted_zero_string_only ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::invalid_reverse_order_fails_before_group_counter_write ... ok
[INFO] [stdout] test smarts_write::coordinates_source_tests::two_d_coordinates_share_strict_zero_threshold_and_general_format ... ok
[INFO] [stdout] test smarts_write::cx_smarts_earlier_stereo_computed_failure_source_tests::missing_stereo_done_fails_its_computed_setter_before_output_order_recording ... ok
[INFO] [stdout] test smarts_write::data_sgroup_empty_presence_source_tests::present_empty_vector_does_not_select_another_nonempty_value ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::empty_members_reproduce_seek_over_prefix_colon ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::empty_vector_and_empty_vector_elements_keep_distinct_framing ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::enclosing_writer_emits_data_polymer_hierarchy_without_mutating_query ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::raw_type_overrides_constructor_and_skips_wrong_datafields_tag ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::wrong_datafields_tag_keeps_group_write_without_final_counter_commit ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::duplicate_members_and_final_comma_follow_source_and_input_stays_unchanged ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::explicit_write_id_is_preserved_independently_of_read_id ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::duplicate_write_ids_are_reassigned_after_sort_without_resorting ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::user_member_order_and_duplicates_are_not_canonicalized ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::all_fields_keep_counted_binary_strings_and_datafields_vector_order ... ok
[INFO] [stdout] test smarts_write::describe_query_source_tests::disabled_logging_keeps_opaque_nonclone_payloads_borrowed_and_unmodified ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::unsigned_counter_wraps_after_actual_group_write ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::actual_atrop_info_participates_in_bond_only_group_emission ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::first_composite_features_are_not_published_before_a_failed_later_leaf ... ok
[INFO] [stdout] test smarts_write::complete_recurse_get_smarts_source_tests::source_stereo_mark_is_shared_across_leaves_and_survives_later_error ... ok
[INFO] [stdout] test smarts_write::data_sgroups_source_tests::non_data_groups_keep_existing_counter ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::fragment_unselected_members_keep_native_zero_mapping ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::no_groups_return_before_reverse_order_index_access ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::nonempty_group_collection_with_no_marked_members_emits_empty ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::canon_precondition_failure_occurs_after_cache_updates_and_before_reset ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::failed_map_conversion_retains_source_stereo_marker_without_atom_order_append ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::excluded_bond_breaks_chirality_in_shared_canonical_pipeline ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::complex_query_type_controls_cache_without_copying_query_into_bond_carrier ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::or_and_missing_ids_use_separate_source_sequences ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::later_invalid_identity_retains_earlier_cache_and_initialized_fake_ring_state ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::ordinary_carrier_origin_and_raw_member_effects_survive_canon_projection ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::ranks_drive_branch_order_through_shared_canon_not_custom_neighbor_sort ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::query_h_count_changes_source_ring_inversion_without_changing_carrier_hydrogens ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::present_groups_make_invalid_reverse_access_structural ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::property_cache_updates_excluded_atoms_before_any_traversal ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::source_atom_stereo_marker_returns_to_working_graph_and_suppresses_second_emission ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::bond_writer_failure_does_not_append_the_failing_bond_order ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::stale_direction_is_cleared_by_canon_before_single_bond_rendering ... ok
[INFO] [stdout] test smarts_write::get_sorted_mapped_indexes_source_tests::reverse_permutation_is_applied_before_sorting ... ok
[INFO] [stdout] test smarts_write::get_sorted_mapped_indexes_source_tests::empty_input_stays_empty_without_reading_reverse_vector ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::actual_atrop_info_reaches_canonical_group_collection ... ok
[INFO] [stdout] test smarts_write::get_sorted_mapped_indexes_source_tests::repeated_input_members_remain_repeated ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::bond_only_group_uses_actual_neighbor_wedge_direction ... ok
[INFO] [stdout] test smarts_write::enhanced_stereo_block_source_tests::source_atom_output_order_controls_emitted_group_members ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::ring_stack_records_only_emitted_bonds_and_resets_fake_sssr ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::atom_writer_failure_happens_after_ring_reset_and_keeps_only_emitted_order_prefix ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::source_atom_owner_flag_is_presence_only_and_independent_of_params ... ok
[INFO] [stdout] test smarts_write::fragment_smarts_construct_source_tests::chain_emits_source_stack_including_left_endpoints_and_exact_orders ... ok
[INFO] [stdout] test smarts_write::get_sorted_mapped_indexes_source_tests::mapped_value_order_does_not_assume_input_atom_index_order ... ok
[INFO] [stdout] test smarts_write::get_sorted_mapped_indexes_source_tests::sparse_default_zero_mappings_are_not_filtered ... ok
[INFO] [stdout] test smarts_write::get_sorted_mapped_indexes_source_tests::invalid_reverse_access_is_a_structural_error_not_zero ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::empty_collected_groups_are_filtered_after_source_collection ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::equal_write_ids_use_mapped_members_without_read_id_tiebreak ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::same_kind_orders_by_write_id_before_mapped_members ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::sorting_preserves_group_read_write_ids_and_input_query ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::source_group_type_precedes_write_id_and_members ... ok
[INFO] [stdout] test smarts_write::link_nodes_consumer_source_tests::enclosing_cx_uses_full_source_link_parser_and_forward_indexes ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::duplicate_reversed_atom_rows_become_source_bitmap_not_output_order ... ok
[INFO] [stderr] bad counts in LINKNODE '0 3 2 2 1 2 3'
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::empty_graph_returns_before_index_or_root_access ... ok
[INFO] [stderr] only link nodes with 2 bonds are currently supported
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::bond_mask_access_precedes_atom_mask_access ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::detached_public_adapter_reuses_complete_source_and_keeps_input_values ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::invalid_atom_rows_are_read_in_input_order ... ok
[INFO] [stdout] test smarts_write::link_nodes_consumer_source_tests::invalid_counts_and_three_bonds_are_rejected_before_valid_node ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::empty_graph_nonempty_selection_returns_before_cx_or_row_checks ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::empty_extension_adds_no_space_but_retains_recorded_names_and_cache ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::public_immutable_adapter_keeps_graph_properties_and_coordinate_state ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::empty_selection_error_precedes_all_cx_effects ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::fragment_ignores_root_and_cx_uses_actual_selected_atom_order ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::fragment_preserves_both_explicit_dative_options ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::fragment_coordinates_use_source_front_and_selected_coordinate_row ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_cx_smarts_wrapper_source_tests::later_cx_failure_retains_actual_order_metadata_and_ring_prefix ... ok
[INFO] [stdout] test smarts_write::get_sorted_stereo_groups_source_tests::duplicate_members_and_sparse_zero_reverse_entries_survive ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::repeated_bond_rows_are_one_true_bit_without_duplicate_emission ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::source_preconditions_precede_empty_graph_return ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::ring_fragment_reuses_canonical_ring_stack_and_preserves_input_cache ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::source_fragment_resets_out_of_range_root_before_canonical_call ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::rooted_index_error_precedes_source_computed_property_read ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::source_error_after_order_recording_preserves_order_names_and_ring_prefix ... ok
[INFO] [stdout] test smarts_write::link_nodes_consumer_source_tests::reached_source_range_errors_propagate_through_search ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::absent_bond_pointer_and_explicit_mask_keep_distinct_source_inputs ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::all_tetrahedral_remaining_atoms_use_lowest_actual_index_rank ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::already_black_root_is_ignored_and_selected_component_has_no_trailing_dot ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::rooted_component_is_first_then_source_physical_scan_resumes ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::no_white_atoms_skip_fragment_cache_but_record_empty_source_orders ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::non_tetrahedral_chiral_tag_is_a_source_non_tetrahedral_start_candidate ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::rooted_index_precondition_is_checked_even_when_no_atom_is_white ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::physical_non_chiral_scan_precedes_lower_rank_tetrahedral_component ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_wrapper_source_tests::all_components_and_atoms_are_in_play_with_source_physical_order ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::unselected_query_bond_is_not_emitted_or_evaluated ... ok
[INFO] [stdout] test smarts_write::mol_fragment_to_smarts_wrapper_source_tests::invalid_bond_rows_are_read_in_input_order_without_set_sort ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_wrapper_source_tests::nonempty_does_not_skip_root_precondition ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_wrapper_source_tests::source_cache_and_stereo_working_effects_never_modify_borrowed_input ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::computed_names_keep_existing_duplicates_and_native_order ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::empty_smarts_skips_cx_setters_cache_and_cleanup ... ok
[INFO] [stdout] test smarts_write::ordinary_atom_dispatch_source_tests::borrowed_ordinary_transport_retains_raw_bytes_properties_and_error_immutability ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::immutable_public_value_adapter_keeps_original_cx_properties_and_cache ... ok
[INFO] [stdout] test smarts_parse::recovery_chem29_query::warnings_emit_new_duplicate_once_keep_old_rb_twice_and_ctor_never ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::order_setter_failure_occurs_before_any_cx_ring_or_cleanup_effect ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::root_order_is_shared_with_cx_coordinate_bond_writer ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_wrapper_source_tests::flags_and_root_are_forwarded_without_wrapper_overrides ... ok
[INFO] [stdout] test smarts_write::mol_to_cx_smarts_wrapper_source_tests::whole_source_forces_dative_false_but_retains_coordinate_bond_extension ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_wrapper_source_tests::public_text_and_output_apis_share_source_empty_and_nonempty_order_semantics ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_wrapper_source_tests::empty_early_return_skips_root_validation_copy_properties_and_orders ... ok
[INFO] [stdout] test smarts_write::ordinary_atom_dispatch_source_tests::ordinary_early_return_skips_fake_recursion_and_retains_source_map_behavior ... ok
[INFO] [stdout] test smarts_write::ordinary_atom_dispatch_source_tests::ordinary_signed_map_read_differs_from_explicit_query_string_read ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::crossing_bonds_use_forward_order_and_odd_tail_positions ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::wrong_generic_vector_tag_fails_after_group_write_without_final_counter_commit ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::lexical_reverse_typemap_chooses_alt_for_unknown_copolymer_subtype ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::molecule_counter_conversion_precedes_reverse_access ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::source_unsigned_output_counter_wraps_after_group_write ... ok
[INFO] [stdout] test smarts_write::quote_string_source_tests::empty_string_remains_empty ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::empty_atom_members_follow_source_seek_overwrite ... ok
[INFO] [stdout] test smarts_write::quote_string_source_tests::source_fix_does_not_escape_cx_delimiters ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::empty_groups_return_before_bad_counter_and_reverse_order_reads ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::hierarchy_consumes_actual_polymer_writes_and_input_query_stays_unchanged ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::raw_label_and_connect_take_precedence_and_keep_counted_binary_bytes ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::raw_type_and_subtype_override_constructor_kind ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::raw_unknown_type_overrides_kind_and_skips_later_wrong_vector_tag ... ok
[INFO] [stdout] test smarts_write::polymer_sgroups_source_tests::unused_native_reverse_bond_vector_is_still_checked_before_group_writes ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::collection_error_occurs_before_warning_iteration ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::false_isomeric_option_preserves_existing_owner_presence_without_mutating_input ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::enclosing_writer_removes_one_source_trailing_comma ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::ordered_counts_group_output_positions_and_keep_trailing_comma ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::repeated_atom_ids_keep_distinct_output_positions ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::source_invalid_atom_access_is_structural_even_with_flags_off ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::unsupported_counts_warn_once_per_group_and_keep_positions_without_header ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::cache_membership_gate_precedes_get_bond_and_preserves_reached_range_error ... ok
[INFO] [stdout] test smarts_write::ordinary_atom_dispatch_source_tests::carrier_derived_atom_uses_actual_attributes_and_ignores_synthetic_query ... ok
[INFO] [stdout] test smarts_write::quote_atomprop_consumer_source_tests::actual_atom_properties_consumer_quotes_names_and_values_through_canonical_owner ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::end_atom_branch_and_both_endpoint_toggles_follow_native_parity ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::false_boolean_subscript_uses_atom_order_zero_and_cis_is_not_xor_flipped ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::initialized_empty_actual_cache_is_not_rebuilt_from_cyclic_graph ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::native_minimum_ring_size_gate_distinguishes_seven_and_eight ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::only_double_or_aromatic_with_any_cis_trans_tags_are_included ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::output_positions_include_unselected_rows_and_repeat_bond_ids ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::reached_missing_reference_and_atom_order_errors_are_structural_and_immutable ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::uninitialized_source_ring_cache_returns_before_orders_and_never_finds_cycle ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::zero_radicals_and_empty_order_produce_no_output_or_warnings ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::absent_output_index_does_not_read_bad_computed_list ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::bad_parent_on_nonemitted_group_is_not_skipped ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::actual_source_and_output_indexes_determine_hierarchy ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::true_boolean_subscript_uses_atom_order_one_as_integer_truth ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::enclosing_cx_writer_promotes_rings_before_ring_stereo_output ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::empty_groups_return_without_touching_molecule_properties ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::duplicate_source_indexes_overwrite_map_last ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::clearing_output_property_removes_only_first_computed_membership ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::default_source_index_is_the_physical_group_index ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::group_types_never_fabricate_missing_output_index_properties ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::matched_parent_reads_bad_child_index_even_if_child_not_emitted ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::source_index_conversion_precedes_output_conversion_and_clear ... ok
[INFO] [stdout] test smarts_write::quote_string_source_tests::native_counted_copy_preserves_every_byte ... ok
[INFO] [stdout] test smarts_write::mol_to_smarts_source_tests::public_output_route_uses_real_canonical_ring_stack_and_preserves_input ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::typed_parent_relation_projects_to_existing_external_index ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::stereo_any_never_reads_atom_order_or_stereo_references ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::output_conversion_failure_keeps_current_and_later_group_properties ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::no_parent_does_not_read_unemitted_bad_index ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::no_parent_still_clears_actual_output_indexes ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::parent_output_keys_sort_but_children_keep_physical_order ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::actual_atom_facts_are_used_and_query_remains_unchanged ... ok
[INFO] [stdout] test smarts_write::ring_bond_stereo_source_tests::three_group_return_is_literal_concatenation_without_intergroup_commas ... ok
[INFO] [stdout] test smarts_write::radicals_source_tests::enclosing_disabled_radicals_keeps_no_output ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::computed_list_failure_preserves_prior_clears_and_current_output_property ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_2147483647_smarts_write ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_256_smarts_write ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_3_smarts_write ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_2_smarts_write ... ok
[INFO] [stdout] test smarts_write::typed_bonds_consumer_source_tests::actual_enclosing_writer_emits_only_exact_coordinate_and_hydrogen_types ... ok
[INFO] [stdout] test smarts_write::typed_bonds_consumer_source_tests::query_adapter_preserves_first_find_end_and_structured_range_error ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_0_smarts_write ... ok
[INFO] [stdout] test smarts_write::smarts_source_state_tests::periodic_table_precondition_uses_carrier_and_precedes_graph_emission ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_1_smarts_write ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_255_smarts_write ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_2147483648_smarts_write ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_4_smarts_write ... ok
[INFO] [stdout] test smarts_write::quote_string_source_tests::returned_value_is_independent_of_source_storage ... ok
[INFO] [stdout] test smarts_write::sgroup_hierarchy_source_tests::unmatched_parent_short_circuits_bad_child_index ... ok
[INFO] [stdout] test target::tests::q86_target_state_keeps_current_carriers_and_non_element_boundary ... ok
[INFO] [stdout] test tests::match_query_uses_detached_topology_and_returns_index_mappings ... ok
[INFO] [stdout] test tests::complete_writer_round_trips_ring_queries ... ok
[INFO] [stdout] test tests::complete_matcher_applies_generic_group_labels ... ok
[INFO] [stdout] test tests::compile_query_orders_constrained_atoms_first ... ok
[INFO] [stdout] test tests::unsupported_predicates_fail_closed ... ok
[INFO] [stdout] test smarts_write::uint_complete_source_condition_cells::uint_cell_unsigned_cfg_4294967295_smarts_write ... ok
[INFO] [stdout] test target::tests::q86_model_query_state_audit_checks_counts_ids_and_endpoints ... ok
[INFO] [stdout] test tests::compiled_query_reuses_its_planned_order ... ok
[INFO] [stdout] test tests::complete_matcher_handles_ring_and_range_predicates ... ok
[INFO] [stdout] test tests::complete_matcher_handles_recursive_smarts ... ok
[INFO] [stdout] test smarts_write::zero_bonds_consumer_source_tests::enclosing_cx_writer_uses_source_output_positions_and_shared_owner ... ok
[INFO] [stdout] test smarts_write::zero_bonds_consumer_source_tests::query_adapter_preserves_range_error_instead_of_empty_output ... ok
[INFO] [stdout] test target::tests::q86_target_state_defaults_and_origins_are_independent_of_tree_shape ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 699 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/layered_query_aromaticity.rs (/opt/rustwide/target/release/build/cosmolkit-search/d668930674baa453/out/layered_query_aromaticity-d668930674baa453)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test and_checks_source_order_and_ignores_second_child_negation ... ok
[INFO] [stderr]      Running tests/layered_query_complexity.rs (/opt/rustwide/target/release/build/cosmolkit-search/f588d980daa7f12a/out/layered_query_complexity-f588d980daa7f12a)
[INFO] [stdout] test negated_aromatic_and_aliphatic_roots_follow_source ... ok
[INFO] [stdout] test unrelated_and_boolean_roots_remain_nonaromatic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test bond_only_source_simple_order_branches_are_noncomplex ... ok
[INFO] [stdout] test ordinary_carriers_keep_source_has_query_false ... ok
[INFO] [stdout] test atom_simple_roots_are_distinct_from_standalone_constraints ... ok
[INFO] [stderr]      Running tests/migration_q_builder.rs (/opt/rustwide/target/release/build/cosmolkit-search/308565c326229720/out/migration_q_builder-308565c326229720)
[INFO] [stdout] test atom_and_requires_atomic_identity_and_rejects_complex_descendants ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test recursive_query_keeps_its_owned_graph_default_and_explicit_serials ... ok
[INFO] [stdout] test smarts_bond_boolean_expansion_preserves_source_carrier_bond_type ... ok
[INFO] [stdout] test smarts_builder_returns_canonical_graph_with_stable_row_identity ... ok
[INFO] [stdout] test atom_carrier_fields_follow_each_source_reduction_branch ... ok
[INFO] [stdout] test smarts_explicit_hydrogen_count_and_no_implicit_state_reach_carrier ... ok
[INFO] [stdout] test source_query_atom_carrier_retains_numeric_atomic_number_119 ... ok
[INFO] [stdout] test clear_chemical_properties_preserves_no_implicit_and_query_predicates ... ok
[INFO] [stdout] test conflicting_hydrogen_and_charge_queries_clear_only_carrier_values ... ok
[INFO] [stdout] test generic_a_and_aromatic_as_tokens_preserve_carrier_and_predicate_identity ... ok
[INFO] [stdout] test each_repeated_not_action_clears_carrier_even_when_negation_cancels ... ok
[INFO] [stdout] test generic_a_aromatic_endpoints_create_aromatic_implicit_bonds ... ok
[INFO] [stdout] test implicit_bond_carrier_order_uses_both_source_atom_aromatic_flags ... ok
[INFO] [stdout] test smarts_charge_primitive_is_carried_and_remains_a_query_leaf ... ok
[INFO] [stdout] test widened_query_predicates_match_and_write_without_narrowing ... ok
[INFO] [stdout] test q07d_primitive_targets_match_and_write_without_narrowing ... ok
[INFO] [stdout] test chem24_subset_controller_tests::fast_query_subset_maps_none_and_any_controllers_once ... ok
[INFO] [stdout] test smarts_and_reduction_clears_carrier_isotope_without_erasing_query_leaf ... ok
[INFO] [stdout] test parser_rows_keep_explicit_query_origin_separate_from_carrier_derived_rows ... ok
[INFO] [stdout] test bond_query_expansion_preserves_source_predicate_order_and_origin ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/migration_q_callbacks.rs (/opt/rustwide/target/release/build/cosmolkit-search/9d3847118724e59b/out/migration_q_callbacks-9d3847118724e59b)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test q87_bond_pair_callbacks_preserve_source_order_and_rejection ... ok
[INFO] [stdout] test q87_atom_pair_callbacks_preserve_source_order_and_rejection ... ok
[INFO] [stdout] test q90_json_error_keeps_source_ordered_partial_updates_and_integer_width ... ok
[INFO] [stdout] test q88_complete_map_callback_accepts_rejects_and_stops_at_source_limit ... ok
[INFO] [stdout] test q90_json_update_preserves_source_types_defaults_and_unknown_keys ... ok
[INFO] [stdout] test q89_coordinate_callback_selects_conformers_tolerance_and_three_axes ... ok
[INFO] [stdout] test q91_json_serialization_preserves_source_order_types_and_roundtrip ... ok
[INFO] [stderr]      Running tests/migration_q_compile.rs (/opt/rustwide/target/release/build/cosmolkit-search/662e14e9c11ca6db/out/migration_q_compile-662e14e9c11ca6db)
[INFO] [stdout] test q87_unsupported_pair_queries_keep_typed_errors_before_callbacks ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test q66_compiled_order_prioritizes_rare_degrees_and_keeps_equal_degree_ties ... ok
[INFO] [stdout] test q65_compiled_graph_keeps_undirected_endpoints_and_bond_indices ... ok
[INFO] [stdout] test q65_compiled_graph_handles_empty_and_disconnected_queries ... ok
[INFO] [stdout] test q68_compiled_plan_owns_query_ids_and_remains_immutable ... ok
[INFO] [stdout] test q67_frequency_order_covers_disconnected_groups_and_source_ties ... ok
[INFO] [stdout] test q69_compiled_recursive_query_resets_between_targets ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/migration_q_cx_lower.rs (/opt/rustwide/target/release/build/cosmolkit-search/9989c90595deb036/out/migration_q_cx_lower-9989c90595deb036)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test q26_atom_properties_keep_decoded_values_overwrite_order_and_skip_invalid_indices ... ok
[INFO] [stdout] test q27_cx_query_predicates_preserve_origin_and_raw_identity ... ok
[INFO] [stdout] test q26_labels_and_atom_properties_follow_record_order_before_label_processing ... ok
[INFO] [stdout] test q32_variable_attachment_rejects_a_valid_anchor_with_nonunit_degree ... ok
[INFO] [stdout] test q32_variable_attachment_projection_keeps_source_bond_and_endpoint_references ... ok
[INFO] [stdout] test q29_enhanced_stereo_projects_group_kinds_ids_and_valid_members ... ok
[INFO] [stdout] test q26_atom_label_and_value_slots_keep_decoded_text_and_source_indices ... ok
[INFO] [stdout] test q28_coordinate_dimension_requires_projected_z_above_source_tolerance ... ok
[INFO] [stdout] test q28_coordinate_projection_maps_slots_and_zero_fills_missing_rows ... ok
[INFO] [stdout] test q32_link_node_projection_keeps_source_atom_references_without_topology_rewrite ... ok
[INFO] [stdout] test q30_data_sgroups_preserve_members_payload_and_source_indexes ... ok
[INFO] [stdout] test q31_polymer_sgroups_preserve_crossings_hierarchy_and_source_order ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/migration_q_generic.rs (/opt/rustwide/target/release/build/cosmolkit-search/b9c199a6d748acdd/out/migration_q_generic-b9c199a6d748acdd)
[INFO] [stdout] 
[INFO] [stdout] running 23 tests
[INFO] [stdout] test q42_generic_group_dispatch_preserves_source_h_ignore_ring_and_label_rules ... ok
[INFO] [stdout] test q48_alkynyl_variants_require_source_triple_bond_witness ... ok
[INFO] [stdout] test q51_heteroacyclic_variants_use_source_acyclic_hetero_witnesses ... ok
[INFO] [stdout] test q47_alkenyl_variants_require_source_double_bond_witness ... ok
[INFO] [stdout] test q45_group_variants_keep_source_hydrogen_and_ring_fallbacks ... ok
[INFO] [stdout] test q49_acyclic_variants_use_source_ring_and_non_h_witnesses ... ok
[INFO] [stdout] test q52_alkoxyacyclic_variants_keep_source_attachment_and_component_rules ... ok
[INFO] [stdout] test q46_alkyl_variants_keep_source_component_carbon_and_bond_rules ... ok
[INFO] [stdout] test q55_fused_ring_match_keeps_source_system_and_component_boundaries ... ok
[INFO] [stdout] test q50_carboacyclic_variants_keep_source_c_h_ring_rules ... ok
[INFO] [stdout] test q53_ring_atom_checks_preserve_root_ignore_and_fused_ring_membership ... ok
[INFO] [stdout] test q56_carbocycloalkyl_variants_keep_source_atom_bond_and_h_rules ... ok
[INFO] [stdout] test q58_carboaryl_variants_keep_source_aromatic_atom_bond_and_h_rules ... ok
[INFO] [stdout] test q57_carbocycloalkenyl_variants_keep_source_ring_atom_and_bond_witnesses ... ok
[INFO] [stdout] test q54_ring_bond_checks_preserve_matcher_and_per_ring_witness_rules ... ok
[INFO] [stdout] test q59_carbocyclic_variants_keep_source_carbon_ring_and_h_rules ... ok
[INFO] [stdout] test q63_cyclic_variants_keep_source_ring_membership_and_h_rules ... ok
[INFO] [stdout] test q64_generic_dispatch_checks_each_single_atom_label_and_ignores_unknown_labels ... ok
[INFO] [stdout] test q61_heterocyclic_variants_keep_source_ring_system_witness_and_h_rules ... ok
[INFO] [stdout] test q60_no_carbon_ring_variants_keep_source_noncarbon_and_h_rules ... ok
[INFO] [stdout] test q42_generic_group_dispatch_keeps_all_source_alias_pairs ... ok
[INFO] [stdout] test q44_all_atoms_match_traverses_the_unignored_component_and_combines_witnesses ... ok
[INFO] [stdout] test q62_heteroaryl_variants_keep_source_aromatic_ring_and_witness_rules ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/migration_q_match.rs (/opt/rustwide/target/release/build/cosmolkit-search/e697c75bf562d753/out/migration_q_match-e697c75bf562d753)
[INFO] [stdout] 
[INFO] [stdout] running 32 tests
[INFO] [stdout] test q70_vf2_state_empty_query_and_target_boundaries ... ok
[INFO] [stdout] test q72_atom_and_bond_labels_reject_equal_degree_candidates ... ok
[INFO] [stdout] test q71_next_pair_walks_frontiers_and_exhausts_neighbor_candidates ... ok
[INFO] [stdout] test q71_next_pair_enumerates_target_candidates_in_index_order ... ok
[INFO] [stdout] test q74_backtrack_restores_state_after_rejected_sibling_branch ... ok
[INFO] [stdout] test q75_first_match_uses_first_disconnected_candidate_and_handles_empty_graphs ... ok
[INFO] [stdout] test q78_recursive_match_limit_and_root_projection_follow_source ... ok
[INFO] [stdout] test q76_match_all_preserves_source_order_limits_and_exact_completed_mappings ... ok
[INFO] [stdout] test q79_unsupported_compatibility_keeps_typed_error_before_callback ... ok
[INFO] [stdout] test q77_recursive_cache_uses_root_scope_and_reuses_serial_labels ... ok
[INFO] [stdout] test q73_add_pair_tracks_mapping_and_frontier_depth_across_branches ... ok
[INFO] [stdout] test q81_double_bond_stereo_uses_mapped_neighbors_and_bond_orientation ... ok
[INFO] [stdout] test q84_vf2_results_keep_query_to_target_direction_source_order_and_limit ... ok
[INFO] [stdout] test q86_query_target_atom_dispatch_entries_callbacks_and_origins ... ok
[INFO] [stdout] test q86_query_target_bond_dispatch_and_mixed_origin_fallback ... ok
[INFO] [stdout] test q85_uniquify_keeps_first_mapping_per_target_atom_set_in_vf2_order ... ok
[INFO] [stdout] test q78_recursive_matching_walks_nested_query_children ... ok
[INFO] [stdout] test q82_target_group_members_keep_source_parity_and_query_group_identity ... ok
[INFO] [stdout] test q72_mapped_edge_feasibility_rejects_triangle_in_square ... ok
[INFO] [stdout] test q71_next_pair_starts_new_query_components_and_exhausts_target_nodes ... ok
[INFO] [stdout] test q73_add_pair_advances_depth_across_disconnected_components ... ok
[INFO] [stdout] test q72_degree_short_circuit_and_missing_isotope_mass_follow_source ... ok
[INFO] [stdout] test q80_tetrahedral_mapping_permutation_and_implicit_hydrogen_follow_source ... ok
[INFO] [stdout] test q86_query_target_remap_and_attachment_errors_are_typed ... ok
[INFO] [stdout] test q81_unspecified_bond_stereo_option_matches_source ... ok
[INFO] [stdout] test q82_query_enhanced_stereo_group_kinds_follow_source ... ok
[INFO] [stdout] test q77_recursive_cache_is_rebuilt_for_each_target_call ... ok
[INFO] [stdout] test q86_query_target_recursive_reuse_keeps_cache_call_local ... ok
[INFO] [stdout] test q83_extra_final_check_runs_before_stereo_rejection ... ok
[INFO] [stdout] test q80_stereo_options_match_source_unspecified_short_circuit ... ok
[INFO] [stdout] test q79_atom_and_bond_callback_order_follows_source_short_circuits ... ok
[INFO] [stderr]      Running tests/migration_q_mcs.rs (/opt/rustwide/target/release/build/cosmolkit-search/ef910fb857c67707/out/migration_q_mcs-ef910fb857c67707)
[INFO] [stdout] test q70_vf2_state_initializes_unequal_graphs_and_disconnected_components ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test q134_entry_rejects_input_threshold_and_required_valence_with_typed_errors ... ok
[INFO] [stdout] test q134_entry_empty_single_atom_and_bond_results_follow_source_branches ... ok
[INFO] [stdout] test q134_entry_fused_ring_and_tetrahedral_options_reach_final_mapping ... ok
[INFO] [stdout] test q134_entry_threshold_multi_candidate_and_store_all_keep_result_context ... ok
[INFO] [stderr]      Running tests/migration_q_parser.rs (/opt/rustwide/target/release/build/cosmolkit-search/7309ad718a26a478/out/migration_q_parser-7309ad718a26a478)
[INFO] [stdout] test q134_entry_double_bond_stereo_and_unlimited_search_preserve_complete_result ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 54 tests
[INFO] [stdout] test q01_a_source_indexes_cover_ordinary_branches_disconnected_and_dative ... ok
[INFO] [stderr] bond 1 not found, cannot mark as zero order bond.
[INFO] [stdout] test q01_a_coordinate_consumers_resolve_ring_source_indexes ... ok
[INFO] [stdout] test q01_a_wedge_consumers_resolve_ring_source_indexes ... ok
[INFO] [stdout] test q01_a_zero_consumers_resolve_ring_source_indexes ... ok
[INFO] [stdout] test q03_bad_character_dispatch_preserves_byte_position_and_parser_priority ... ok
[INFO] [stdout] test q04_percent_ring_numbers_follow_pinned_grammar_and_error_position ... ok
[INFO] [stdout] test q03_common_bond_token_width_sets_following_bad_character_byte_position ... ok
[INFO] [stdout] test q03_common_bond_tokens_keep_source_order_and_arrow_endpoints ... ok
[INFO] [stdout] test q01_a_recursive_queries_share_source_bond_counter ... ok
[INFO] [stdout] test q01_a_missing_explicit_index_uses_source_fallback_and_out_of_window_skips ... ok
[INFO] [stdout] test q01_a_source_fallback_completes_both_modes_and_consumes_full_cursor ... ok
[INFO] [stdout] test generic_a_and_as_follow_bracket_lexical_state_and_carrier_identity ... ok
[INFO] [stdout] test q07e_cx_ring_bond_lowering_keeps_exact_and_scan_targets_and_carrier ... ok
[INFO] [stdout] test q07a_element_numeric_and_wildcard_atoms_preserve_identity_and_origin ... ok
[INFO] [stdout] test q01_a_double_stereo_consumers_resolve_ring_source_indexes ... ok
[INFO] [stdout] test q07d_neighbor_targets_keep_full_source_i32_and_distinct_factories ... ok
[INFO] [stdout] test q07b_charge_targets_keep_full_i32_value_and_narrow_carrier ... ok
[INFO] [stdout] test q01_a_detached_cx_lowerer_uses_same_source_lookup ... ok
[INFO] [stdout] test q07b_isotope_targets_keep_i32_value_and_u16_carrier_projection ... ok
[INFO] [stdout] test q01_a_ring_indexes_follow_token_order_not_final_rows ... ok
[INFO] [stdout] test q09_hydrogen_atom_and_h_count_forms_follow_distinct_source_reductions ... ok
[INFO] [stdout] test q07c_aromatic_flags_and_hybridization_tokens_keep_query_carriers_separate ... ok
[INFO] [stdout] test q07d_degree_targets_keep_full_source_i32_and_default_carriers ... ok
[INFO] [stdout] test q18_recursive_graph_ownership_root_errors_and_source_serial_limit ... ok
[INFO] [stdout] test q06_range_bounds_cover_inclusive_open_ends_and_malformed_forms ... ok
[INFO] [stdout] test q07d_hydrogen_targets_keep_full_source_i32_and_narrow_carriers ... ok
[INFO] [stdout] test q10_source_atom_carriers_compose_across_primitive_reductions ... ok
[INFO] [stdout] test q16_dative_endpoint_orientation_and_source_row_order ... ok
[INFO] [stdout] test q17_recursive_labels_follow_source_order_and_preserve_explicit_duplicates ... ok
[INFO] [stdout] test q19_preprocessing_defaults_replacements_name_delimiter_and_malformed_input ... ok
[INFO] [stdout] test q20_strict_cx_lowering_failure_returns_cx_error ... ok
[INFO] [stdout] test q11_bond_boolean_precedence_preserves_left_carrier_and_direction ... ok
[INFO] [stdout] test q14_disconnected_components_keep_source_order_and_reject_dangling_tokens ... ok
[INFO] [stdout] test q08_atom_boolean_precedence_and_not_carrier_reductions ... ok
[INFO] [stdout] test q12_bond_primitive_predicates_keep_source_carrier_defaults ... ok
[INFO] [stdout] test q20_lenient_cx_failure_retains_prior_record_effects ... ok
[INFO] [stdout] test q13_branch_stack_restores_attachment_and_rejects_invalid_branch_starts ... ok
[INFO] [stdout] test q20_lenient_cx_failure_retains_source_cursor_property ... ok
[INFO] [stdout] test q21_hydrogen_atom_and_count_queries_keep_source_classification ... ok
[INFO] [stdout] test q20_lenient_cx_lowering_failure_retains_record_effects_and_cursor ... ok
[INFO] [stdout] test q24_direction_pairs_missing_neighbors_and_query_carrier_provenance ... ok
[INFO] [stdout] test q21_hydrogens_found_through_or_queries_are_unmergeable ... ok
[INFO] [stdout] test q22_nonrecursive_merge_counts_mapped_hydrogen_and_retains_isotope_by_default ... ok
[INFO] [stdout] test scanner_setup_trims_control_bytes_only_at_input_edges ... ok
[INFO] [stdout] test q23_recursive_query_hydrogen_merge_descends_without_aliasing_or_losing_serials ... ok
[INFO] [stdout] test q25_chiral_permutation_boundaries_are_query_native_and_source_ordered ... ok
[INFO] [stdout] test q21_recursive_smarts_hydrogen_predicates_are_not_atom_hydrogens ... ok
[INFO] [stdout] test q20_wrapper_cx_name_flags_and_error_order ... ok
[INFO] [stdout] test q15_ring_closures_follow_bookmark_order_priority_and_source_errors ... ok
[INFO] [stdout] test q03_parser_errors_use_trimmed_parser_byte_positions ... ok
[INFO] [stdout] test q22_merge_hydrogen_neighbor_count_uses_source_unsigned_width ... ok
[INFO] [stdout] test q05_number_tokens_preserve_zero_width_and_signed_source_limit ... ok
[INFO] [stdout] test q07e_ring_primitives_keep_source_identity_full_targets_and_defaults ... ok
[INFO] [stderr]      Running tests/migration_q_predicates.rs (/opt/rustwide/target/release/build/cosmolkit-search/ca2aef6f9a020757/out/migration_q_predicates-ca2aef6f9a020757)
[INFO] [stdout] test q07e_ring_ranges_keep_source_query_classes_bounds_and_matching ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.44s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test q39_scalar_ranges_tolerance_negation_sets_and_errors_follow_source ... ok
[INFO] [stdout] test q33_override_and_post_callback_follow_source_property_order ... ok
[INFO] [stdout] test q38_bond_order_sets_aromatic_flag_direction_and_stereo_follow_source ... ok
[INFO] [stdout] test q34_mass_predicates_use_only_the_source_unknown_isotope_fallback ... ok
[INFO] [stdout] test q33_explicit_negation_and_carrier_default_and_nondefault_fields_match_source ... ok
[INFO] [stdout] test q35_degree_hydrogen_and_valence_predicates_read_prepared_source_cache ... ok
[INFO] [stdout] test q33_carrier_derived_and_explicit_rows_use_their_source_dispatch ... ok
[INFO] [stdout] test q36_ring_queries_read_prepared_state_and_preserve_integer_boundaries ... ok
[INFO] [stdout] test q37_bond_ring_queries_read_prepared_state_and_keep_fused_ring_counts ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/migration_q_source_scalar_cleanup.rs (/opt/rustwide/target/release/build/cosmolkit-search/dbe6166c0d421776/out/migration_q_source_scalar_cleanup-dbe6166c0d421776)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test pinned_query_cleanup_preserves_original_sgroup_cx_index ... ok
[INFO] [stdout] test pinned_scalar_properties_match_the_source_string_projection ... ok
[INFO] [stderr]      Running tests/migration_q_writer.rs (/opt/rustwide/target/release/build/cosmolkit-search/2e4e3fb4ca65db9f/out/migration_q_writer-2e4e3fb4ca65db9f)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test concrete_smarts_valence_failure_keeps_native_cause_and_input ... ok
[INFO] [stdout] test q96_simple_bond_serialization_preserves_order_direction_ring_and_aromatic_spelling ... ok
[INFO] [stdout] test q97_bond_boolean_serialization_preserves_precedence_negation_and_binary_state ... ok
[INFO] [stdout] test q93_atom_boolean_serialization_preserves_precedence_and_negation ... ok
[INFO] [stdout] test q101_fragment_selection_validates_indices_and_retains_query_state ... ok
[INFO] [stdout] test typed_query_properties_keep_source_order_and_string_projection ... ok
[INFO] [stdout] test q100_graph_emission_preserves_branches_components_and_output_identity ... ok
[INFO] [stdout] test directional_smarts_writer_clears_unpaired_markers_and_preserves_complete_stereo ... ok
[INFO] [stdout] test stereo_query_writes_accept_the_source_empty_ring_cache ... ok
[INFO] [stdout] test source_cx_false_is3d_omits_z_without_discarding_xyz_storage ... ok
[INFO] [stdout] test q98_query_traversal_classification_preserves_roots_components_and_ring_edges ... ok
[INFO] [stdout] test q95_atom_recursion_dispatch_reuses_children_and_source_defined_wildcard ... ok
[INFO] [stdout] test q102_cx_query_output_maps_properties_coordinates_stereo_and_supported_bonds ... ok
[INFO] [stdout] test q99_ring_numbering_preserves_source_closure_order_reuse_and_label_boundary ... ok
[INFO] [stdout] test source_cx_missing_mixed_conformer_order_is_a_typed_failure ... ok
[INFO] [stdout] test source_cx_prepared_coordinates_follow_actual_mixed_conformer_order ... ok
[INFO] [stdout] test q92_simple_atom_predicates_preserve_source_spelling_and_ranges ... ok
[INFO] [stdout] test q94_recursive_serialization_uses_owned_graph_root_and_map_options ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smarts_counted_bytes.rs (/opt/rustwide/target/release/build/cosmolkit-search/a7ee089f0849ca5e/out/smarts_counted_bytes-a7ee089f0849ca5e)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test all_trimmed_nonempty_input_copies_the_source_c_string_nul_into_scanner_data ... ok
[INFO] [stdout] test counted_chemical_error_precedes_valid_raw_cx_metadata ... ok
[INFO] [stdout] test recursive_source_provenance_uses_one_canonical_byte_value_and_deep_clone ... ok
[INFO] [stdout] test counted_replacements_preserve_raw_name_and_nonoverlapping_source_ranges ... ok
[INFO] [stderr]    Doc-tests cosmolkit_search
[INFO] [stdout] test counted_internal_bad_byte_has_scanner_offset_not_unicode_rejection ... ok
[INFO] [stdout] test counted_embedded_nul_is_a_lexer_byte_not_a_c_string_terminator ... ok
[INFO] [stdout] test counted_source_signed_char_window_trims_high_edge_bytes ... ok
[INFO] [stdout] test counted_cx_label_data_and_suffix_are_exact_source_bytes ... ok
[INFO] [stdout] test counted_name_keeps_invalid_utf8_nul_and_vertical_tab_trim_order ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533", kill_on_drop: false }`
[INFO] [stdout] efff454542b4ea891c42f530968d8d361f25cd7e50c50d60568c12c96bf7f533
