/* Generated By:JJTree: Do not edit this line. ASTUnaryExpression.java */

package org.eclipse.jst.jsp.core.internal.java.jspel;

public class ASTUnaryExpression extends SimpleNode {
  public ASTUnaryExpression(int id) {
    super(id);
  }

  public ASTUnaryExpression(JSPELParser p, int id) {
    super(p, id);
  }


  /** Accept the visitor. **/
  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
    return visitor.visit(this, data);
  }
}
