// Path: src/main/java/com/github/kmizu/yapp/Ast.java
// public static abstract class Expression extends Node {
//   public Expression(Position pos){
//     super(pos);
//   }
// }
// 
// Path: src/main/java/com/github/kmizu/yapp/Ast.java
// public static class BoundedExpression extends Expression {
//   private Expression body;
//   public BoundedExpression(Expression body) {
//     super(body.pos());
//     this.body = body;
//   }
//     
//   public Expression body() {
//     return body;
//   }
//     
//   @Override
//   public String toString() {
//     return "bounded{" + body + "}";
//   }
//     
//   @Override
//   public <R, C> R accept(Visitor<R, C> visitor, C context) {
//     return visitor.visit(this, context);
//   }    
// }


import com.github.kmizu.yapp.Ast.Expression;
import com.github.kmizu.yapp.Ast.BoundedExpression;
package com.github.kmizu.yapp.translator;


/**
 * A special MacroExpander which doesn't desugar BoundedExpression.
 */
public class MacroExpanderEx extends MacroExpander {
  @Override
// Path: src/main/java/com/github/kmizu/yapp/Ast.java
// public static abstract class Expression extends Node {
//   public Expression(Position pos){
//     super(pos);
//   }
// }
// 
// Path: src/main/java/com/github/kmizu/yapp/Ast.java
// public static class BoundedExpression extends Expression {
//   private Expression body;
//   public BoundedExpression(Expression body) {
//     super(body.pos());
//     this.body = body;
//   }
//     
//   public Expression body() {
//     return body;
//   }
//     
//   @Override
//   public String toString() {
//     return "bounded{" + body + "}";
//   }
//     
//   @Override
//   public <R, C> R accept(Visitor<R, C> visitor, C context) {
//     return visitor.visit(this, context);
//   }    
// }


// Path: src/main/java/com/github/kmizu/yapp/translator/MacroExpanderEx.java
import com.github.kmizu.yapp.Ast.Expression;
import com.github.kmizu.yapp.Ast.BoundedExpression;

package com.github.kmizu.yapp.translator;


/**
 * A special MacroExpander which doesn't desugar BoundedExpression.
 */
public class MacroExpanderEx extends MacroExpander {
  @Override
  protected Expression visit(BoundedExpression node, MacroEnvironment env) {