<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<!-- **************************************** -->
<!-- *                                      * -->
<!-- *  PLEASE KEEP COMPLICATED EXPRESSIONS * -->
<!-- *  OUT OF THESE TEMPLATES.             * -->
<!-- *  i.e. only iterate & print data      * -->
<!-- *  Thanks                              * -->
<!-- *  Jez.                                * -->
<!-- *                                      * -->
<!-- **************************************** -->
<HTML>
<HEAD>
<!-- Generated by groovydoc (Jeremy Rayner 2007) -->
<TITLE>
${classDoc.name()}
</TITLE>

<META NAME="keywords" CONTENT="getTimezoneOffset()">

<!-- todo stylesheet relative path -->
<LINK REL ="stylesheet" TYPE="text/css" HREF="${classDoc.getRelativeRootPath()}stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="${classDoc.name()}";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">



<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
${classDoc.containingPackage().nameWithDots()}</FONT>
<BR>
<FONT CLASS="ClassTitleFont">Class ${classDoc.name()}</FONT></H2>
<P>
${classDoc.commentText()}
</P>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#D5D5FF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>

</TR>
<% for (constructor in classDoc.constructors()) { %>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><a href="">${constructor.name()}</a></B>(<%= constructor.parameters().collect{ param -> "${param.typeName()} ${param.name()}" }.join(", ") %>)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${constructor.firstSentenceCommentText()}</TD>
</TR>
<% } %>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#D5D5FF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2" CLASS="ClassHeadingFont">
<B>Method Summary</B></FONT></TH>
</TR>

<% for (method in classDoc.methods()) { %>

  <TR BGCOLOR="white" CLASS="TableRowColor">
    <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1" CLASS="ClassItemFont">
    <CODE>&nbsp;${method.returnType().typeName()}</CODE></FONT></TD>
    <TD><FONT CLASS="ClassItemFont"><CODE><B><a href="">${method.name()}</a></B>(<%= method.parameters().collect{ param -> "${param.typeName()} ${param.name()}" }.join(", ") %>)</CODE></FONT>

    <BR>
    <FONT CLASS="ClassItemFont">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${method.firstSentenceCommentText()}</FONT>
    </TD>
  </TR>

<% } %>





</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<% for (constructor in classDoc.constructors()) { %>
<A NAME="QName(java.lang.String)"><!-- --></A><H3>
${constructor.name()}</H3>
<PRE>
<!-- todo - public--> <B>${constructor.name()}</B>(<%= constructor.parameters().collect{ param -> "${param.typeName()} ${param.name()}" }.join(", ") %>)</PRE>
<DL>
<DD>${constructor.commentText()}
<P>
<!--<DL>
<DT> todo <B>Parameters:</B><DD><CODE>localPart</CODE> - Local part of the QName</DL>-->

</DL>
<HR>
<% } %>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<% for (method in classDoc.methods()) { %>
<A NAME="${method.name()}"><!-- --></A><H3>
${method.name()}</H3>
<PRE>
<!-- todo - public--> ${method.returnType().typeName()} <B>${method.name()}</B>(<%= method.parameters().collect{ param -> "${param.typeName()} ${param.name()}" }.join(", ") %>)</PRE>

<DL>
<DD>${method.commentText()}
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B><!--todo Returns:--></B><DD><!-- todo --></DL>
</DD>
</DL>
<HR>
<% } %>
	
<!-- ========= END OF CLASS DATA ========= -->
<HR>


</BODY>
</HTML>
