[INFO] fetching crate pina 0.12.0...
[INFO] documenting pina-0.12.0 against da3f5c31e5535b3dc210067de660a45784ae1e9c for pr-162169
[INFO] extracting crate pina 0.12.0 into /workspace/builds/worker-0-tc2/source
[INFO] started tweaking crates.io crate pina 0.12.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate pina 0.12.0
[INFO] tweaked toml for crates.io crate pina 0.12.0 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate pina 0.12.0 on toolchain da3f5c31e5535b3dc210067de660a45784ae1e9c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate pina 0.12.0 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" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `lints.clippy.tabs-in-doc-comments` is deprecated in favor of `lints.clippy.tabs_in_doc_comments` and will not work in a future edition
[INFO] [stderr] warning: `pina` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed
[INFO] running `Command { std: "docker" "start" "a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed", 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" "a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed", 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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `lints.clippy.tabs-in-doc-comments` is deprecated in favor of `lints.clippy.tabs_in_doc_comments` and will not work in a future edition
[INFO] [stderr] warning: `pina` (manifest) generated 1 warning
[INFO] [stderr]     Checking solana-hash v4.5.0
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking solana-program-error v3.0.1
[INFO] [stderr]     Checking sha2-const-stable v0.1.0
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling pastey v0.2.3
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking solana-sha256-hasher v3.1.0
[INFO] [stderr]    Compiling darling_core v0.24.1
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling zeropod-derive v0.3.5
[INFO] [stderr]    Compiling solana-program-log-macro v1.1.0
[INFO] [stderr]    Compiling bytemuck_derive v1.12.0
[INFO] [stderr]     Checking solana-program-log v1.2.0
[INFO] [stderr]     Checking solana-address v2.6.1
[INFO] [stderr]     Checking solana-account-view v2.0.0
[INFO] [stderr]     Checking solana-instruction-view v2.1.0
[INFO] [stderr]     Checking pinocchio v0.11.2
[INFO] [stderr]     Checking zeropod v0.3.5
[INFO] [stderr]     Checking pinocchio-system v0.6.1
[INFO] [stderr]    Compiling darling_macro v0.24.1
[INFO] [stderr]    Compiling darling v0.24.1
[INFO] [stderr]    Compiling pina_macros v0.12.0
[INFO] [stderr]  Documenting pina v0.12.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/cpi.rs:66:1
[INFO] [stdout]    |
[INFO] [stdout] 66 | / pub struct CreateAccount<'account, 'address> {
[INFO] [stdout] 67 | |     /// Funding account that pays the new account's rent-exempt balance.
[INFO] [stdout] 68 | |     pub from: &'account AccountView,
[INFO] [stdout] ...  |
[INFO] [stdout] 77 | |     pub owner: &'address Address,
[INFO] [stdout] 78 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]    = help: ends near `Creates a rent-exempt system account owned by another program.`
[INFO] [stdout]    = note: `#[deny(rustdoc::unportable_markdown)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/cpi.rs:66:1
[INFO] [stdout]    |
[INFO] [stdout] 66 | / pub struct CreateAccount<'account, 'address> {
[INFO] [stdout] 67 | |     /// Funding account that pays the new account's rent-exempt balance.
[INFO] [stdout] 68 | |     pub from: &'account AccountView,
[INFO] [stdout] ...  |
[INFO] [stdout] 77 | |     pub owner: &'address Address,
[INFO] [stdout] 78 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Creates a rent-exempt system account owned by another program.`
[INFO] [stdout]    = help: ends near `Creates a rent-exempt system account owned by another program.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:162:1
[INFO] [stdout]     |
[INFO] [stdout] 162 | / pub struct CreateProgramAccount<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 163 | |     /// PDA account to allocate and initialize.
[INFO] [stdout] 164 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 173 | |     pub seeds: &'seeds [&'seed [u8]],
[INFO] [stdout] 174 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]     = help: ends near `Creates and initializes a PDA-backed account for a [`PinaAccount`] type.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:162:1
[INFO] [stdout]     |
[INFO] [stdout] 162 | / pub struct CreateProgramAccount<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 163 | |     /// PDA account to allocate and initialize.
[INFO] [stdout] 164 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 173 | |     pub seeds: &'seeds [&'seed [u8]],
[INFO] [stdout] 174 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Creates and initializes a PDA-backed account for a [`PinaAccount`] type.`
[INFO] [stdout]     = help: ends near `Creates and initializes a PDA-backed account for a [`PinaAccount`] type.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:263:1
[INFO] [stdout]     |
[INFO] [stdout] 263 | / pub struct CreateProgramAccountWithBump<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 264 | |     /// PDA account to allocate and initialize.
[INFO] [stdout] 265 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 277 | |     pub bump: u8,
[INFO] [stdout] 278 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]     = help: ends near `initializes `T`'s discriminator.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:263:1
[INFO] [stdout]     |
[INFO] [stdout] 263 | / pub struct CreateProgramAccountWithBump<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 264 | |     /// PDA account to allocate and initialize.
[INFO] [stdout] 265 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 277 | |     pub bump: u8,
[INFO] [stdout] 278 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Creates a PDA-backed program account using a caller-provided `bump` and`
[INFO] [stdout]     = help: ends near `Creates a PDA-backed program account using a caller-provided `bump` and`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:365:1
[INFO] [stdout]     |
[INFO] [stdout] 365 | / pub struct AllocateAccount<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 366 | |     /// PDA account to allocate and assign.
[INFO] [stdout] 367 | |     pub account: &'account AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 379 | |     pub seeds: &'seeds [&'seed [u8]],
[INFO] [stdout] 380 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]     = help: ends near `and the canonical `bump`.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:365:1
[INFO] [stdout]     |
[INFO] [stdout] 365 | / pub struct AllocateAccount<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 366 | |     /// PDA account to allocate and assign.
[INFO] [stdout] 367 | |     pub account: &'account AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 379 | |     pub seeds: &'seeds [&'seed [u8]],
[INFO] [stdout] 380 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Allocates space for a new program account, returning the derived `address``
[INFO] [stdout]     = help: ends near `Allocates space for a new program account, returning the derived `address``
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:465:1
[INFO] [stdout]     |
[INFO] [stdout] 465 | / pub fn combine_seeds_with_bump<'a>(
[INFO] [stdout] 466 | |     seeds: &[&'a [u8]],
[INFO] [stdout] 467 | |     bump: &'a [u8; 1],
[INFO] [stdout] 468 | | ) -> Result<[Seed<'a>; MAX_SEEDS], ProgramError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 485 | |     Ok(storage)
[INFO] [stdout] 486 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]     = help: ends near `a fixed-size `[Seed; MAX_SEEDS]` suitable for PDA signing.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:465:1
[INFO] [stdout]     |
[INFO] [stdout] 465 | / pub fn combine_seeds_with_bump<'a>(
[INFO] [stdout] 466 | |     seeds: &[&'a [u8]],
[INFO] [stdout] 467 | |     bump: &'a [u8; 1],
[INFO] [stdout] 468 | | ) -> Result<[Seed<'a>; MAX_SEEDS], ProgramError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 485 | |     Ok(storage)
[INFO] [stdout] 486 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Appends a single-byte bump seed to the provided seeds array, returning`
[INFO] [stdout]     = help: ends near `Appends a single-byte bump seed to the provided seeds array, returning`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:496:1
[INFO] [stdout]     |
[INFO] [stdout] 496 | / pub struct PdaSigner<'a, const SEEDS: usize> {
[INFO] [stdout] 497 | |     seeds: [Seed<'a>; SEEDS],
[INFO] [stdout] 498 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]     = help: ends near `Stack-backed PDA signer seeds for Pinocchio CPI calls.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:496:1
[INFO] [stdout]     |
[INFO] [stdout] 496 | / pub struct PdaSigner<'a, const SEEDS: usize> {
[INFO] [stdout] 497 | |     seeds: [Seed<'a>; SEEDS],
[INFO] [stdout] 498 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Stack-backed PDA signer seeds for Pinocchio CPI calls.`
[INFO] [stdout]     = help: ends near `Stack-backed PDA signer seeds for Pinocchio CPI calls.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:585:1
[INFO] [stdout]     |
[INFO] [stdout] 585 | / pub struct AllocateAccountWithBump<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 586 | |     /// PDA account to allocate and assign.
[INFO] [stdout] 587 | |     pub account: &'account AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 602 | |     pub bump: u8,
[INFO] [stdout] 603 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]     = help: ends near `Allocates a PDA account with a caller-provided bump.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:585:1
[INFO] [stdout]     |
[INFO] [stdout] 585 | / pub struct AllocateAccountWithBump<'account, 'address, 'seeds, 'seed> {
[INFO] [stdout] 586 | |     /// PDA account to allocate and assign.
[INFO] [stdout] 587 | |     pub account: &'account AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 602 | |     pub bump: u8,
[INFO] [stdout] 603 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Allocates a PDA account with a caller-provided bump.`
[INFO] [stdout]     = help: ends near `Allocates a PDA account with a caller-provided bump.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:960:1
[INFO] [stdout]     |
[INFO] [stdout] 960 | / pub struct CloseAccount<'account, 'recipient> {
[INFO] [stdout] 961 | |     /// Program-owned account to close.
[INFO] [stdout] 962 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 965 | |     pub recipient: &'recipient mut AccountView,
[INFO] [stdout] 966 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]     = help: ends near `Closes an account and returns its remaining lamports to a recipient.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/cpi.rs:960:1
[INFO] [stdout]     |
[INFO] [stdout] 960 | / pub struct CloseAccount<'account, 'recipient> {
[INFO] [stdout] 961 | |     /// Program-owned account to close.
[INFO] [stdout] 962 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...   |
[INFO] [stdout] 965 | |     pub recipient: &'recipient mut AccountView,
[INFO] [stdout] 966 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Closes an account and returns its remaining lamports to a recipient.`
[INFO] [stdout]     = help: ends near `Closes an account and returns its remaining lamports to a recipient.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1005:1
[INFO] [stdout]      |
[INFO] [stdout] 1005 | / pub struct CloseAccountZeroed<'account, 'recipient> {
[INFO] [stdout] 1006 | |     /// Program-owned account whose bytes will be cleared before closing.
[INFO] [stdout] 1007 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...    |
[INFO] [stdout] 1010 | |     pub recipient: &'recipient mut AccountView,
[INFO] [stdout] 1011 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]      = help: ends near `Closes an account after zeroing its current data bytes in-place.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1005:1
[INFO] [stdout]      |
[INFO] [stdout] 1005 | / pub struct CloseAccountZeroed<'account, 'recipient> {
[INFO] [stdout] 1006 | |     /// Program-owned account whose bytes will be cleared before closing.
[INFO] [stdout] 1007 | |     pub account: &'account mut AccountView,
[INFO] [stdout] ...    |
[INFO] [stdout] 1010 | |     pub recipient: &'recipient mut AccountView,
[INFO] [stdout] 1011 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `Closes an account after zeroing its current data bytes in-place.`
[INFO] [stdout]      = help: ends near `Closes an account after zeroing its current data bytes in-place.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1036:1
[INFO] [stdout]      |
[INFO] [stdout] 1036 | / pub struct CpiHandle<'a> {
[INFO] [stdout] 1037 | |     view: &'a AccountView,
[INFO] [stdout] 1038 | |     writable: bool,
[INFO] [stdout] 1039 | |     signer: bool,
[INFO] [stdout] 1040 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]      = help: ends near `Typed handle for passing validated accounts into CPI builders.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1036:1
[INFO] [stdout]      |
[INFO] [stdout] 1036 | / pub struct CpiHandle<'a> {
[INFO] [stdout] 1037 | |     view: &'a AccountView,
[INFO] [stdout] 1038 | |     writable: bool,
[INFO] [stdout] 1039 | |     signer: bool,
[INFO] [stdout] 1040 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `Typed handle for passing validated accounts into CPI builders.`
[INFO] [stdout]      = help: ends near `Typed handle for passing validated accounts into CPI builders.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1136:1
[INFO] [stdout]      |
[INFO] [stdout] 1136 | / pub trait CpiProgramId {
[INFO] [stdout] 1137 | |     /// Canonical program address.
[INFO] [stdout] 1138 | |     const ID: Address;
[INFO] [stdout] 1139 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]      = help: ends near `Marker trait for a known CPI target program.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1136:1
[INFO] [stdout]      |
[INFO] [stdout] 1136 | / pub trait CpiProgramId {
[INFO] [stdout] 1137 | |     /// Canonical program address.
[INFO] [stdout] 1138 | |     const ID: Address;
[INFO] [stdout] 1139 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `Marker trait for a known CPI target program.`
[INFO] [stdout]      = help: ends near `Marker trait for a known CPI target program.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1148:1
[INFO] [stdout]      |
[INFO] [stdout] 1148 | / pub struct Program<'a, T: CpiProgramId> {
[INFO] [stdout] 1149 | |     account: &'a AccountView,
[INFO] [stdout] 1150 | |     _marker: core::marker::PhantomData<T>,
[INFO] [stdout] 1151 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]      = help: ends near `A validated CPI target program account.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1148:1
[INFO] [stdout]      |
[INFO] [stdout] 1148 | / pub struct Program<'a, T: CpiProgramId> {
[INFO] [stdout] 1149 | |     account: &'a AccountView,
[INFO] [stdout] 1150 | |     _marker: core::marker::PhantomData<T>,
[INFO] [stdout] 1151 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `A validated CPI target program account.`
[INFO] [stdout]      = help: ends near `A validated CPI target program account.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1200:1
[INFO] [stdout]      |
[INFO] [stdout] 1200 | / pub trait ToCpiAccounts<'a, const ACCOUNTS: usize> {
[INFO] [stdout] 1201 | |     /// Collect the handles in the exact order expected by the callee
[INFO] [stdout] 1202 | |     /// instruction.
[INFO] [stdout] 1203 | |     fn to_cpi_handles(&self) -> [CpiHandle<'a>; ACCOUNTS];
[INFO] [stdout] 1204 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]      = help: ends near `Convert a typed CPI accounts struct into a fixed-size array of handles.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1200:1
[INFO] [stdout]      |
[INFO] [stdout] 1200 | / pub trait ToCpiAccounts<'a, const ACCOUNTS: usize> {
[INFO] [stdout] 1201 | |     /// Collect the handles in the exact order expected by the callee
[INFO] [stdout] 1202 | |     /// instruction.
[INFO] [stdout] 1203 | |     fn to_cpi_handles(&self) -> [CpiHandle<'a>; ACCOUNTS];
[INFO] [stdout] 1204 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `Convert a typed CPI accounts struct into a fixed-size array of handles.`
[INFO] [stdout]      = help: ends near `Convert a typed CPI accounts struct into a fixed-size array of handles.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1214:1
[INFO] [stdout]      |
[INFO] [stdout] 1214 | / pub struct CpiContext<'a, P, T, const ACCOUNTS: usize>
[INFO] [stdout] 1215 | | where
[INFO] [stdout] 1216 | |     P: CpiProgramId,
[INFO] [stdout] 1217 | |     T: ToCpiAccounts<'a, ACCOUNTS>,
[INFO] [stdout] ...    |
[INFO] [stdout] 1223 | |     pub program: Program<'a, P>,
[INFO] [stdout] 1224 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `CPI helpers for account creation, PDA allocation, and account closure.`
[INFO] [stdout]      = help: ends near `Minimal typed CPI context built around [`CpiHandle`] and const generics.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]     --> src/cpi.rs:1214:1
[INFO] [stdout]      |
[INFO] [stdout] 1214 | / pub struct CpiContext<'a, P, T, const ACCOUNTS: usize>
[INFO] [stdout] 1215 | | where
[INFO] [stdout] 1216 | |     P: CpiProgramId,
[INFO] [stdout] 1217 | |     T: ToCpiAccounts<'a, ACCOUNTS>,
[INFO] [stdout] ...    |
[INFO] [stdout] 1223 | |     pub program: Program<'a, P>,
[INFO] [stdout] 1224 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = help: the way this is parsed might change in the future
[INFO] [stdout]      = help: starts near `Minimal typed CPI context built around [`CpiHandle`] and const generics.`
[INFO] [stdout]      = help: ends near `Minimal typed CPI context built around [`CpiHandle`] and const generics.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/error.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | / pub enum PinaProgramError {
[INFO] [stdout] 17 | |     /// Two mutable account fields point at the same runtime account.
[INFO] [stdout] 18 | |     DuplicateMutableAccount = 0xFFFF_FFF9,
[INFO] [stdout] 19 | |     /// Account or instruction data is shorter than the expected minimum.
[INFO] [stdout] ...  |
[INFO] [stdout] 30 | |     InvalidDiscriminator = 0xFFFF_FFFF,
[INFO] [stdout] 31 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Built-in framework error types.`
[INFO] [stdout]    = help: ends near `Built-in pina framework errors.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/error.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | / pub enum PinaProgramError {
[INFO] [stdout] 17 | |     /// Two mutable account fields point at the same runtime account.
[INFO] [stdout] 18 | |     DuplicateMutableAccount = 0xFFFF_FFF9,
[INFO] [stdout] 19 | |     /// Account or instruction data is shorter than the expected minimum.
[INFO] [stdout] ...  |
[INFO] [stdout] 30 | |     InvalidDiscriminator = 0xFFFF_FFFF,
[INFO] [stdout] 31 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Built-in pina framework errors.`
[INFO] [stdout]    = help: ends near `Built-in pina framework errors.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/pda.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | / pub fn try_find_program_address(seeds: &[&[u8]], program_id: &Address) -> Option<(Address, u8)> {
[INFO] [stdout] 34 | |     Address::try_find_program_address(seeds, program_id)
[INFO] [stdout] 35 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `PDA (Program Derived Address) derivation and verification functions.`
[INFO] [stdout]    = help: ends near `Find a valid program derived address and its corresponding bump seed.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/pda.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | / pub fn try_find_program_address(seeds: &[&[u8]], program_id: &Address) -> Option<(Address, u8)> {
[INFO] [stdout] 34 | |     Address::try_find_program_address(seeds, program_id)
[INFO] [stdout] 35 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Find a valid program derived address and its corresponding bump seed.`
[INFO] [stdout]    = help: ends near `Find a valid program derived address and its corresponding bump seed.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/pda.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | / pub fn find_program_address(seeds: &[&[u8]], program_id: &Address) -> (Address, u8) {
[INFO] [stdout] 51 | |     try_find_program_address(seeds, program_id)
[INFO] [stdout] 52 | |         .unwrap_or_else(|| panic!("could not find program address from seeds"))
[INFO] [stdout] 53 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `PDA (Program Derived Address) derivation and verification functions.`
[INFO] [stdout]    = help: ends near `Find a valid program derived address and its corresponding bump seed.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/pda.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | / pub fn find_program_address(seeds: &[&[u8]], program_id: &Address) -> (Address, u8) {
[INFO] [stdout] 51 | |     try_find_program_address(seeds, program_id)
[INFO] [stdout] 52 | |         .unwrap_or_else(|| panic!("could not find program address from seeds"))
[INFO] [stdout] 53 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Find a valid program derived address and its corresponding bump seed.`
[INFO] [stdout]    = help: ends near `Find a valid program derived address and its corresponding bump seed.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/pda.rs:89:1
[INFO] [stdout]    |
[INFO] [stdout] 89 | / pub fn create_program_address(
[INFO] [stdout] 90 | |     seeds: &[&[u8]],
[INFO] [stdout] 91 | |     program_id: &Address,
[INFO] [stdout] 92 | | ) -> Result<Address, ProgramError> {
[INFO] [stdout] 93 | |     Address::create_program_address(seeds, program_id).map_err(|_| ProgramError::InvalidSeeds)
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `PDA (Program Derived Address) derivation and verification functions.`
[INFO] [stdout]    = help: ends near `Create a valid program derived address without searching for a bump seed.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/pda.rs:89:1
[INFO] [stdout]    |
[INFO] [stdout] 89 | / pub fn create_program_address(
[INFO] [stdout] 90 | |     seeds: &[&[u8]],
[INFO] [stdout] 91 | |     program_id: &Address,
[INFO] [stdout] 92 | | ) -> Result<Address, ProgramError> {
[INFO] [stdout] 93 | |     Address::create_program_address(seeds, program_id).map_err(|_| ProgramError::InvalidSeeds)
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Create a valid program derived address without searching for a bump seed.`
[INFO] [stdout]    = help: ends near `Create a valid program derived address without searching for a bump seed.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/traits.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | / pub trait PinaAccount: HasDiscriminator + ZeroPodFixed {
[INFO] [stdout] 37 | |     /// Validate the discriminator and content of `data`.
[INFO] [stdout] 38 | |     fn validate_account_data(data: &[u8]) -> Result<(), ProgramError> {
[INFO] [stdout] 39 | |         if data.len() != Self::SIZE || !Self::matches_discriminator(data) {
[INFO] [stdout] ...  |
[INFO] [stdout] 57 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]    = help: ends near `A native account schema with a zeropod-generated zero-copy representation.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/traits.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | / pub trait PinaAccount: HasDiscriminator + ZeroPodFixed {
[INFO] [stdout] 37 | |     /// Validate the discriminator and content of `data`.
[INFO] [stdout] 38 | |     fn validate_account_data(data: &[u8]) -> Result<(), ProgramError> {
[INFO] [stdout] 39 | |         if data.len() != Self::SIZE || !Self::matches_discriminator(data) {
[INFO] [stdout] ...  |
[INFO] [stdout] 57 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `A native account schema with a zeropod-generated zero-copy representation.`
[INFO] [stdout]    = help: ends near `A native account schema with a zeropod-generated zero-copy representation.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:84:1
[INFO] [stdout]     |
[INFO] [stdout]  84 | / pub trait AccountValidation {
[INFO] [stdout]  85 | |     /// Assert an immutable condition on the account data.
[INFO] [stdout]  86 | |     fn assert<F>(&self, condition: F) -> Result<&Self, ProgramError>
[INFO] [stdout]  87 | |     where
[INFO] [stdout] ...   |
[INFO] [stdout] 103 | |         F: Fn(&Self) -> bool;
[INFO] [stdout] 104 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Validation trait for deserialized account data (e.g. `EscrowState`).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:84:1
[INFO] [stdout]     |
[INFO] [stdout]  84 | / pub trait AccountValidation {
[INFO] [stdout]  85 | |     /// Assert an immutable condition on the account data.
[INFO] [stdout]  86 | |     fn assert<F>(&self, condition: F) -> Result<&Self, ProgramError>
[INFO] [stdout]  87 | |     where
[INFO] [stdout] ...   |
[INFO] [stdout] 103 | |         F: Fn(&Self) -> bool;
[INFO] [stdout] 104 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Validation trait for deserialized account data (e.g. `EscrowState`).`
[INFO] [stdout]     = help: ends near `Validation trait for deserialized account data (e.g. `EscrowState`).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:132:1
[INFO] [stdout]     |
[INFO] [stdout] 132 | / pub trait AccountInfoValidation {
[INFO] [stdout] 133 | |     /// Assert that the account is a signer.
[INFO] [stdout] 134 | |     fn assert_signer(self) -> Result<Self, ProgramError>
[INFO] [stdout] 135 | |     where
[INFO] [stdout] ...   |
[INFO] [stdout] 219 | |         Self: Sized;
[INFO] [stdout] 220 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Validation trait for raw `AccountView` references.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:132:1
[INFO] [stdout]     |
[INFO] [stdout] 132 | / pub trait AccountInfoValidation {
[INFO] [stdout] 133 | |     /// Assert that the account is a signer.
[INFO] [stdout] 134 | |     fn assert_signer(self) -> Result<Self, ProgramError>
[INFO] [stdout] 135 | |     where
[INFO] [stdout] ...   |
[INFO] [stdout] 219 | |         Self: Sized;
[INFO] [stdout] 220 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Validation trait for raw `AccountView` references.`
[INFO] [stdout]     = help: ends near `Validation trait for raw `AccountView` references.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:354:1
[INFO] [stdout]     |
[INFO] [stdout] 354 | / pub trait IntoDiscriminator: Sized {
[INFO] [stdout] 355 | |     /// The number of bytes required to store this discriminator.
[INFO] [stdout] 356 | |     const BYTES: usize = size_of::<Self>();
[INFO] [stdout] ...   |
[INFO] [stdout] 366 | |     fn matches_discriminator(&self, bytes: &[u8]) -> bool;
[INFO] [stdout] 367 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Low-level discriminator codec.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:354:1
[INFO] [stdout]     |
[INFO] [stdout] 354 | / pub trait IntoDiscriminator: Sized {
[INFO] [stdout] 355 | |     /// The number of bytes required to store this discriminator.
[INFO] [stdout] 356 | |     const BYTES: usize = size_of::<Self>();
[INFO] [stdout] ...   |
[INFO] [stdout] 366 | |     fn matches_discriminator(&self, bytes: &[u8]) -> bool;
[INFO] [stdout] 367 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Low-level discriminator codec.`
[INFO] [stdout]     = help: ends near `Low-level discriminator codec.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:382:1
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub const MAX_DISCRIMINATOR_SPACE: usize = 8;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `errors.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:382:1
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub const MAX_DISCRIMINATOR_SPACE: usize = 8;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `The maximum number of bytes that a discriminator can occupy, chosen to`
[INFO] [stdout]     = help: ends near `The maximum number of bytes that a discriminator can occupy, chosen to`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:413:1
[INFO] [stdout]     |
[INFO] [stdout] 413 | / pub trait HasDiscriminator: Sized {
[INFO] [stdout] 414 | |     /// The underlying type of the discriminator.
[INFO] [stdout] 415 | |     type Type: IntoDiscriminator;
[INFO] [stdout] 416 | |     /// The value of the discriminator for this type.
[INFO] [stdout] ...   |
[INFO] [stdout] 430 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `discriminator enum variant.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:413:1
[INFO] [stdout]     |
[INFO] [stdout] 413 | / pub trait HasDiscriminator: Sized {
[INFO] [stdout] 414 | |     /// The underlying type of the discriminator.
[INFO] [stdout] 415 | |     type Type: IntoDiscriminator;
[INFO] [stdout] 416 | |     /// The value of the discriminator for this type.
[INFO] [stdout] ...   |
[INFO] [stdout] 430 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Associates a concrete type (account / instruction / event struct) with its`
[INFO] [stdout]     = help: ends near `Associates a concrete type (account / instruction / event struct) with its`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:433:1
[INFO] [stdout]     |
[INFO] [stdout] 433 | pub type LoadedAccount<'a, T> = Ref<'a, T>;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Backward-compatible alias for guard-backed immutable typed account access.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:433:1
[INFO] [stdout]     |
[INFO] [stdout] 433 | pub type LoadedAccount<'a, T> = Ref<'a, T>;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Backward-compatible alias for guard-backed immutable typed account access.`
[INFO] [stdout]     = help: ends near `Backward-compatible alias for guard-backed immutable typed account access.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:436:1
[INFO] [stdout]     |
[INFO] [stdout] 436 | pub type LoadedAccountMut<'a, T> = RefMut<'a, T>;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Backward-compatible alias for guard-backed mutable typed account access.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:436:1
[INFO] [stdout]     |
[INFO] [stdout] 436 | pub type LoadedAccountMut<'a, T> = RefMut<'a, T>;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Backward-compatible alias for guard-backed mutable typed account access.`
[INFO] [stdout]     = help: ends near `Backward-compatible alias for guard-backed mutable typed account access.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | / pub trait AsAccount {
[INFO] [stdout] 490 | |     /// Validate ownership and deserialize the account data into an immutable
[INFO] [stdout] 491 | |     /// borrow guard of type `T`. Returns `InvalidAccountData` if the
[INFO] [stdout] 492 | |     /// discriminator doesn't match or the data is the wrong size.
[INFO] [stdout] ...   |
[INFO] [stdout] 505 | |         T: PinaAccount;
[INFO] [stdout] 506 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Deserializes raw `AccountView` data into guard-backed typed account access.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | / pub trait AsAccount {
[INFO] [stdout] 490 | |     /// Validate ownership and deserialize the account data into an immutable
[INFO] [stdout] 491 | |     /// borrow guard of type `T`. Returns `InvalidAccountData` if the
[INFO] [stdout] 492 | |     /// discriminator doesn't match or the data is the wrong size.
[INFO] [stdout] ...   |
[INFO] [stdout] 505 | |         T: PinaAccount;
[INFO] [stdout] 506 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Deserializes raw `AccountView` data into guard-backed typed account access.`
[INFO] [stdout]     = help: ends near `Deserializes raw `AccountView` data into guard-backed typed account access.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:619:1
[INFO] [stdout]     |
[INFO] [stdout] 619 | / pub trait LamportTransfer {
[INFO] [stdout] 620 | |     /// Debit `lamports` from this account and credit them to `to` by directly
[INFO] [stdout] 621 | |     /// mutating both accounts' lamport balances. The sender must be owned by
[INFO] [stdout] 622 | |     /// the executing program.
[INFO] [stdout] ...   |
[INFO] [stdout] 626 | |     fn collect(&self, lamports: u64, from: &AccountView) -> ProgramResult;
[INFO] [stdout] 627 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Direct lamport transfer between accounts.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:619:1
[INFO] [stdout]     |
[INFO] [stdout] 619 | / pub trait LamportTransfer {
[INFO] [stdout] 620 | |     /// Debit `lamports` from this account and credit them to `to` by directly
[INFO] [stdout] 621 | |     /// mutating both accounts' lamport balances. The sender must be owned by
[INFO] [stdout] 622 | |     /// the executing program.
[INFO] [stdout] ...   |
[INFO] [stdout] 626 | |     fn collect(&self, lamports: u64, from: &AccountView) -> ProgramResult;
[INFO] [stdout] 627 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Direct lamport transfer between accounts.`
[INFO] [stdout]     = help: ends near `Direct lamport transfer between accounts.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:649:1
[INFO] [stdout]     |
[INFO] [stdout] 649 | / pub trait CloseAccountWithRecipient {
[INFO] [stdout] 650 | |     /// Close the account and transfer all remaining lamports to the recipient.
[INFO] [stdout] 651 | |     ///
[INFO] [stdout] 652 | |     /// This helper does not zero account data for you. Call `zeroed()` first
[INFO] [stdout] ...   |
[INFO] [stdout] 663 | |     fn close_account_zeroed(&mut self, recipient: &mut AccountView) -> ProgramResult;
[INFO] [stdout] 664 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Close an account and reclaim its rent lamports.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:649:1
[INFO] [stdout]     |
[INFO] [stdout] 649 | / pub trait CloseAccountWithRecipient {
[INFO] [stdout] 650 | |     /// Close the account and transfer all remaining lamports to the recipient.
[INFO] [stdout] 651 | |     ///
[INFO] [stdout] 652 | |     /// This helper does not zero account data for you. Call `zeroed()` first
[INFO] [stdout] ...   |
[INFO] [stdout] 663 | |     fn close_account_zeroed(&mut self, recipient: &mut AccountView) -> ProgramResult;
[INFO] [stdout] 664 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Close an account and reclaim its rent lamports.`
[INFO] [stdout]     = help: ends near `Close an account and reclaim its rent lamports.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:681:1
[INFO] [stdout]     |
[INFO] [stdout] 681 | / pub struct AccountsCursor<'a> {
[INFO] [stdout] 682 | |     program_id: Address,
[INFO] [stdout] 683 | |     remaining: &'a mut [AccountView],
[INFO] [stdout] 684 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Cursor for parsing instruction accounts exactly once.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:681:1
[INFO] [stdout]     |
[INFO] [stdout] 681 | / pub struct AccountsCursor<'a> {
[INFO] [stdout] 682 | |     program_id: Address,
[INFO] [stdout] 683 | |     remaining: &'a mut [AccountView],
[INFO] [stdout] 684 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Cursor for parsing instruction accounts exactly once.`
[INFO] [stdout]     = help: ends near `Cursor for parsing instruction accounts exactly once.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:872:1
[INFO] [stdout]     |
[INFO] [stdout] 872 | / pub trait ParseAccounts<'a>: Sized {
[INFO] [stdout] 873 | |     /// Parse accounts from the cursor, preserving user-authored validation for
[INFO] [stdout] 874 | |     /// later instruction processing.
[INFO] [stdout] 875 | |     fn parse_accounts(cursor: &mut AccountsCursor<'a>) -> Result<Self, ProgramError>;
[INFO] [stdout] 876 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Cursor-based parser for typed account structs.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:872:1
[INFO] [stdout]     |
[INFO] [stdout] 872 | / pub trait ParseAccounts<'a>: Sized {
[INFO] [stdout] 873 | |     /// Parse accounts from the cursor, preserving user-authored validation for
[INFO] [stdout] 874 | |     /// later instruction processing.
[INFO] [stdout] 875 | |     fn parse_accounts(cursor: &mut AccountsCursor<'a>) -> Result<Self, ProgramError>;
[INFO] [stdout] 876 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Cursor-based parser for typed account structs.`
[INFO] [stdout]     = help: ends near `Cursor-based parser for typed account structs.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:902:1
[INFO] [stdout]     |
[INFO] [stdout] 902 | / pub trait TryFromAccountInfos<'a>: Sized {
[INFO] [stdout] 903 | |     /// Convert the raw instruction account slice into a typed accounts struct.
[INFO] [stdout] 904 | |     ///
[INFO] [stdout] 905 | |     /// Implementations should validate account order, count, and invariants
[INFO] [stdout] ...   |
[INFO] [stdout] 910 | |     ) -> Result<Self, ProgramError>;
[INFO] [stdout] 911 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Destructures a slice of `AccountView` into a named accounts struct.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:902:1
[INFO] [stdout]     |
[INFO] [stdout] 902 | / pub trait TryFromAccountInfos<'a>: Sized {
[INFO] [stdout] 903 | |     /// Convert the raw instruction account slice into a typed accounts struct.
[INFO] [stdout] 904 | |     ///
[INFO] [stdout] 905 | |     /// Implementations should validate account order, count, and invariants
[INFO] [stdout] ...   |
[INFO] [stdout] 910 | |     ) -> Result<Self, ProgramError>;
[INFO] [stdout] 911 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Destructures a slice of `AccountView` into a named accounts struct.`
[INFO] [stdout]     = help: ends near `Destructures a slice of `AccountView` into a named accounts struct.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:937:1
[INFO] [stdout]     |
[INFO] [stdout] 937 | / pub trait ProcessAccountInfos<'a>: TryFromAccountInfos<'a> {
[INFO] [stdout] 938 | |     /// Execute the instruction logic after accounts have been validated and
[INFO] [stdout] 939 | |     /// parsed into the implementor type.
[INFO] [stdout] 940 | |     fn process(self, data: &[u8]) -> ProgramResult;
[INFO] [stdout] 941 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core traits for account validation, deserialization, and instruction`
[INFO] [stdout]     = help: ends near `Instruction processor.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/traits.rs:937:1
[INFO] [stdout]     |
[INFO] [stdout] 937 | / pub trait ProcessAccountInfos<'a>: TryFromAccountInfos<'a> {
[INFO] [stdout] 938 | |     /// Execute the instruction logic after accounts have been validated and
[INFO] [stdout] 939 | |     /// parsed into the implementor type.
[INFO] [stdout] 940 | |     fn process(self, data: &[u8]) -> ProgramResult;
[INFO] [stdout] 941 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Instruction processor.`
[INFO] [stdout]     = help: ends near `Instruction processor.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/utils.rs:49:1
[INFO] [stdout]    |
[INFO] [stdout] 49 | / pub fn parse_instruction<'a, T: IntoDiscriminator>(
[INFO] [stdout] 50 | |     api_id: &'a Address,
[INFO] [stdout] 51 | |     program_id: &'a Address,
[INFO] [stdout] 52 | |     data: &'a [u8],
[INFO] [stdout] ...  |
[INFO] [stdout] 82 | |     })
[INFO] [stdout] 83 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Utility functions for instruction parsing, assertions, and token address`
[INFO] [stdout]    = help: ends near `Parses an instruction discriminator from the raw instruction data.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/utils.rs:49:1
[INFO] [stdout]    |
[INFO] [stdout] 49 | / pub fn parse_instruction<'a, T: IntoDiscriminator>(
[INFO] [stdout] 50 | |     api_id: &'a Address,
[INFO] [stdout] 51 | |     program_id: &'a Address,
[INFO] [stdout] 52 | |     data: &'a [u8],
[INFO] [stdout] ...  |
[INFO] [stdout] 82 | |     })
[INFO] [stdout] 83 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Parses an instruction discriminator from the raw instruction data.`
[INFO] [stdout]    = help: ends near `Parses an instruction discriminator from the raw instruction data.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:111:1
[INFO] [stdout]     |
[INFO] [stdout] 111 | / pub fn assert(v: bool, err: impl Into<ProgramError>, msg: &str) -> ProgramResult {
[INFO] [stdout] 112 | |     if v {
[INFO] [stdout] 113 | |         Ok(())
[INFO] [stdout] 114 | |     } else {
[INFO] [stdout] ...   |
[INFO] [stdout] 122 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Utility functions for instruction parsing, assertions, and token address`
[INFO] [stdout]     = help: ends near `Asserts a boolean condition, logging `msg` and returning `err` on failure.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:111:1
[INFO] [stdout]     |
[INFO] [stdout] 111 | / pub fn assert(v: bool, err: impl Into<ProgramError>, msg: &str) -> ProgramResult {
[INFO] [stdout] 112 | |     if v {
[INFO] [stdout] 113 | |         Ok(())
[INFO] [stdout] 114 | |     } else {
[INFO] [stdout] ...   |
[INFO] [stdout] 122 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Asserts a boolean condition, logging `msg` and returning `err` on failure.`
[INFO] [stdout]     = help: ends near `Asserts a boolean condition, logging `msg` and returning `err` on failure.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:130:1
[INFO] [stdout]     |
[INFO] [stdout] 130 | / pub fn log_caller() {
[INFO] [stdout] 131 | |     let caller = Location::caller();
[INFO] [stdout] 132 | |     log!(
[INFO] [stdout] 133 | |         "Location: {}:{}:{}",
[INFO] [stdout] ...   |
[INFO] [stdout] 137 | |     );
[INFO] [stdout] 138 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Utility functions for instruction parsing, assertions, and token address`
[INFO] [stdout]     = help: ends near `Logs caller file/line/column when `logs` feature is enabled.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:130:1
[INFO] [stdout]     |
[INFO] [stdout] 130 | / pub fn log_caller() {
[INFO] [stdout] 131 | |     let caller = Location::caller();
[INFO] [stdout] 132 | |     log!(
[INFO] [stdout] 133 | |         "Location: {}:{}:{}",
[INFO] [stdout] ...   |
[INFO] [stdout] 137 | |     );
[INFO] [stdout] 138 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Logs caller file/line/column when `logs` feature is enabled.`
[INFO] [stdout]     = help: ends near `Logs caller file/line/column when `logs` feature is enabled.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not document `pina`
[INFO] running `Command { std: "docker" "inspect" "a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed", kill_on_drop: false }`
[INFO] [stdout] a8d9ce7fd4630e6d18314e46d87596cbc5bf30ea89e603ee89260efa98eae4ed
