/**
   * Convert this filter into Java code. Output whatever text necessary and return the variable
   * name.
   *
   * @param out The output buffer.
   * @param context Three integers as follows:
   *     <li>indent level - the number of spaces to insert at the beginning of each line
   *     <li>filter number - the next available filter number
   *     <li>filter array number - the next available array of filters number
   * @return The variable name to use when referencing this filter (usually "filter" + context[1]++)
   */
  public String toJavaCode(StringBuffer out, int[] context) {
    String name;
    String ret;

    if (null != mFilter.getChildFilter())
      name = ((Filter) mFilter.getChildFilter()).toJavaCode(out, context);
    else name = null;
    ret = "filter" + context[1]++;
    spaces(out, context[0]);
    out.append("HasChildFilter ");
    out.append(ret);
    out.append(" = new HasChildFilter ();");
    newline(out);
    spaces(out, context[0]);
    out.append(ret);
    out.append(".setRecursive (");
    out.append(mFilter.getRecursive() ? "true" : "false");
    out.append(");");
    newline(out);
    if (null != name) {
      spaces(out, context[0]);
      out.append(ret);
      out.append(".setChildFilter (");
      out.append(name);
      out.append(");");
      newline(out);
    }

    return (ret);
  }
  /**
   * Get the underlying node filter's subordinate filters.
   *
   * @return The node filter object's contained filters.
   */
  public NodeFilter[] getSubNodeFilters() {
    NodeFilter filter;
    NodeFilter[] ret;

    filter = mFilter.getChildFilter();
    if (null != filter) ret = new NodeFilter[] {filter};
    else ret = new NodeFilter[0];

    return (ret);
  }
  /**
   * Get the underlying node filter object.
   *
   * @return The node filter object suitable for serialization.
   */
  public NodeFilter getNodeFilter() {
    NodeFilter filter;
    HasChildFilter ret;

    ret = new HasChildFilter();

    ret.setRecursive(mFilter.getRecursive());
    filter = mFilter.getChildFilter();
    if (null != filter) ret.setChildFilter(((Filter) filter).getNodeFilter());

    return (ret);
  }