use Span;
use HashMap;
/// Maps synthetic byte offsets back to `proc_macro2::Span`s.
///
/// The keys are synthetic `u32` values generated by
/// `RustMacroGraphQLTokenSource` as it emits tokens. These don't
/// correspond to real file byte positions — they are monotonically
/// increasing unique identifiers that allow mapping `ByteSpan.start`
/// values from parse errors back to the original `proc_macro2::Span`
/// for accurate `compile_error!` placement.
///
/// We use synthetic offsets rather than real byte offsets because
/// `proc_macro2::Span::byte_range()` only returns meaningful values
/// on nightly Rust toolchains. On stable toolchains, byte offsets are
/// unreliable/zeroed. Synthetic offsets work on all toolchains.
pub ;