use syntax::ast::*;
use syntax::token::{BinOpToken, DelimToken, Nonterminal, Token, TokenKind};
use syntax::token::{Lit as TokenLit, LitKind as TokenLitKind};
use syntax::tokenstream::{DelimSpan, TokenTree};
use syntax::util::parser;
use crate::ast_manip::{GetNodeId, GetSpan};
use crate::rewrite::base::{binop_left_prec, binop_right_prec, calc_outer_span, rewrite_seq};
use crate::rewrite::{ExprPrec, Rewrite, RewriteCtxtRef};
pub fn rewrite<T: Recursive>(old: &T, new: &T, rcx: RewriteCtxtRef) -> bool {
<T as Recursive>::recursive(old, new, rcx)
}
pub trait Recursive {
fn recursive(old: &Self, new: &Self, rcx: RewriteCtxtRef) -> bool;
}
include!(concat!(env!("OUT_DIR"), "/rewrite_recursive_gen.inc.rs"));