package org.eclipse;

public class SimpleTag implements javax.servlet.jsp.tagext.Tag {

	public int doEndTag() throws javax.servlet.jsp.JspException {
		return 0;
	}

	public int doStartTag() throws javax.servlet.jsp.JspException {
		return 0;
	}

	public Tag getParent() {
		return null;
	}

	public void release() {
	}

	public void setPageContext(javax.servlet.jsp.PageContext pc) {
	}

	public void setParent(javax.servlet.jsp.tagext.Tag t) {
	}

}
