use ;
use crate::;
/// Parse an AND pattern.
///
/// This parser handles the AND operator (&) with left associativity.
/// It collects all patterns separated by & tokens and creates a single AND
/// pattern. If only one pattern is found, it returns that pattern directly.
///
/// Examples:
/// - `bool & text` - matches values that are both boolean AND text (impossible,
/// always fails)
/// - `number & (>= 0)` - matches numbers that are also >= 0
/// - `[*] & map` - matches values that are both arrays AND maps (impossible,
/// always fails)
pub