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

package org.apache.xpath.parser;

import java.util.Vector;
import javax.xml.transform.TransformerException;
import org.apache.xpath.Expression;
import org.apache.xpath.ExpressionOwner;
import org.apache.xpath.XPathContext;
import org.apache.xpath.XPathVisitor;
import org.apache.xpath.objects.XObject;
import org.apache.xpath.seqctor.FLWRExpr;

// The return node should probably be void
public class Return extends NonExecutableExpression
{
	
  public Return(XPath parser) 
  {
    super(parser);
  }
}
