<% CreateListenerTemplateModel model = (CreateListenerTemplateModel) argument; 
model.removeFlags(CreateWebClassTemplateModel.FLAG_QUALIFIED_SUPERCLASS_NAME);
if (model.getJavaPackageName()!=null && model.getJavaPackageName()!="") { %>package <%=model.getJavaPackageName()%>;<%}%>

<% Collection<String> imports = model.getImports();
for (String anImport : imports) { %>
import <%=anImport%>;
<% } %>

/**
 * Application Lifecycle Listener implementation class <%=model.getClassName()%>
 *
<% if (model.isAnnotated()) { %>
 * @web.listener
 *<% } %>
 */