//! This module and its sub-modules contain structures which represent the parsed and processed
//! contents of the various probing macros, like `#[tracer]` and `probe!`.
//!
//! Though there are multiple different probing implementations supported, the way the programmer
//! specifies providers and the way probes are fired must be the same regardless of implementation.
//! Thus, the implementatino doesn't control how to the `TokenStream` is intepreted; the proc
//! macros first call into these modules to parse the input `TokenStream` into a specification of
//! what the programmer wants, complete with helpful error messages if the specification is invalid
//! in some way.
//!
//! Only once a validated specification is available can the code generators go to work.
//!
//! Thus this can be seen as one side of the code generator implementation. The other side, which
//! actually generates probing code, is in the `gen` module.
pub use ProviderInitSpecification;
pub use ProbeSpecification;
pub use ProbeArgSpecification;
pub use ProbeCallDetails;
pub use ProbeCallSpecification;
pub use TracerAttribute;
pub use TracerAttributeArgs;
pub use ;