+ } else {
+ ExpandResult { value: Some((parse, Arc::new(rev_token_map))), err: Some(err) }
+ }
+ }
+ None => {
+ log::debug!("parse = {:?}", parse.syntax_node().kind());
+ ExpandResult { value: Some((parse, Arc::new(rev_token_map))), err: None }
+ }
+ }
+}
+
+fn is_self_replicating(from: &SyntaxNode, to: &SyntaxNode) -> bool {
+ if diff(from, to).is_empty() {
+ return true;
+ }
+ if let Some(stmts) = MacroStmts::cast(from.clone()) {
+ if stmts.statements().any(|stmt| diff(stmt.syntax(), to).is_empty()) {
+ return true;
+ }
+ if let Some(expr) = stmts.expr() {
+ if diff(expr.syntax(), to).is_empty() {
+ return true;