gt:     Node v$3 = GNode.create("Declarator", name, null, null);
context: // ===========================================================================
  // This file has been generated by
  // xtc Factory Factory, version 1.15.0,
  // (C) 2004-2009 Robert Grimm,
  // on Wednesday, February 23, 2011 at 2:21:22 PM.
  // Edit at your own risk.
  // ===========================================================================
  
  package xtc.lang.jeannie;
  
  import java.util.List;
  
  import xtc.tree.Node;
  import xtc.tree.GNode;
  
  /**
   * Node factory <code>xtc.lang.jeannie.JeannieJavaFactory</code>.
   *
   * <p />This class has been generated by
   * the xtc Factory Factory, version 1.15.0,
   * (C) 2004-2009 Robert Grimm.
   */
  public class JeannieJavaFactory {
  
    /** Create a new node factory. */
    public JeannieJavaFactory() {
      // Nothing to do.
    }
  
    /**
     * Create a block.
     *
     * @param statements The statements.
     * @return The generic node.
     */
    public Node block(List<Node> statements) {
      Node v$1 = GNode.create("Block", statements.size()).
        addAll(statements);
      return v$1;
    }
  
    /**
     * Create a call expression.
     *
     * @param nativeMethod The nativeMethod.
     * @return The generic node.
     */
    public Node cInJavaExpressionWithCEnv(String nativeMethod) {
      Node v$1 = GNode.create("ThisExpression", null);
      Node v$2 = GNode.create("PrimaryIdentifier", "cEnv");
      Node v$3 = GNode.create("Arguments", v$2);
      Node v$4 = GNode.create("CallExpression", v$1, null, nativeMethod, v$3);
      return v$4;
    }
  
    /**
     * Create a call expression.
     *
     * @param nativeMethod The nativeMethod.
     * @return The generic node.
     */
    public Node cInJavaExpressionWithoutCEnv(String nativeMethod) {
      Node v$1 = GNode.create("ThisExpression", null);
      Node v$2 = GNode.create("Arguments", false);
      Node v$3 = GNode.create("CallExpression", v$1, null, nativeMethod, v$2);
      return v$3;
    }
  
    /**
     * Create a block.
     *
     * @param nativeMethod The nativeMethod.
     * @param returnAbrupt The returnAbrupt.
     * @return The generic node.
     */
    public Node cInJavaStatementWithCEnv(String nativeMethod, 
                                         String returnAbrupt) {
      Node v$1 = GNode.create("ThisExpression", null);
      Node v$2 = GNode.create("PrimaryIdentifier", "cEnv");
      Node v$3 = GNode.create("Arguments", v$2);
      Node v$4 = GNode.create("CallExpression", v$1, null, nativeMethod, v$3);
      Node v$5 = GNode.create("ExpressionStatement", v$4);
      Node v$6 = GNode.create("ThisExpression", null);
      Node v$7 = GNode.create("SelectionExpression", v$6, returnAbrupt);
      Node v$8 = GNode.create("ReturnStatement", null);
      Node v$9 = GNode.create("ConditionalStatement", v$7, v$8, null);
      Node v$10 = GNode.create("Block", v$5, v$9);
      return v$10;
    }
  
    /**
     * Create a block.
     *
     * @param nativeMethod The nativeMethod.
     * @param returnAbrupt The returnAbrupt.
     * @return The generic node.
     */
    public Node cInJavaStatementWithoutCEnv(String nativeMethod, 
                                            String returnAbrupt) {
      Node v$1 = GNode.create("ThisExpression", null);
      Node v$2 = GNode.create("Arguments", false);
      Node v$3 = GNode.create("CallExpression", v$1, null, nativeMethod, v$2);
      Node v$4 = GNode.create("ExpressionStatement", v$3);
      Node v$5 = GNode.create("ThisExpression", null);
      Node v$6 = GNode.create("SelectionExpression", v$5, returnAbrupt);
      Node v$7 = GNode.create("ReturnStatement", null);
      Node v$8 = GNode.create("ConditionalStatement", v$6, v$7, null);
      Node v$9 = GNode.create("Block", v$4, v$8);
      return v$9;
    }
  
    /**
     * Create a method declaration.
     *
     * @param returnType The returnType.
     * @param name The name.
     * @param envType The envType.
     * @return The generic node.
     */
    public Node cInJavaCodeWithCEnv(Node returnType, String name, Node envType) {
      Node v$1 = GNode.create("Modifier", "private");
      Node v$2 = GNode.create("Modifier", "native");
      Node v$3 = GNode.create("Modifiers", v$1, v$2);
      Node v$4 = GNode.create("Type", returnType, null);
      Node v$5 = GNode.create("Modifier", "final");
      Node v$6 = GNode.create("Modifiers", v$5);
      Node v$7 = GNode.create("Type", envType, null);
      Node v$8 = GNode.create("FormalParameter", v$6, v$7, null, "cEnv", null);
      Node v$9 = GNode.create("FormalParameters", v$8);
      Node v$10 = GNode.create("MethodDeclaration", v$3, null, v$4, name, v$9, 
        null, null, null);
      return v$10;
    }
  
    /**
     * Create a method declaration.
     *
     * @param returnType The returnType.
     * @param name The name.
     * @return The generic node.
     */
    public Node cInJavaCodeWithoutCEnv(Node returnType, String name) {
      Node v$1 = GNode.create("Modifier", "private");
      Node v$2 = GNode.create("Modifier", "native");
      Node v$3 = GNode.create("Modifiers", v$1, v$2);
      Node v$4 = GNode.create("Type", returnType, null);
      Node v$5 = GNode.create("FormalParameters", false);
      Node v$6 = GNode.create("MethodDeclaration", v$3, null, v$4, name, v$5, 
        null, null, null);
      return v$6;
    }
  
    /**
     * Create a block.
     *
     * @param clazz The clazz.
     * @param actuals The actuals.
     * @param result The result.
     * @return The generic node.
     */
    public Node closureExpression(Node clazz, List<Node> actuals, String result) {
      Node v$1 = GNode.create("Modifiers", false);
      Node v$2 = GNode.create("Type", clazz, null);
      Node v$3 = GNode.create("Arguments", actuals.size()).
        addAll(actuals);
      Node v$4 = GNode.create("NewClassExpression", null, null, clazz, v$3, 
        null);
      Node v$5 = GNode.create("Declarator", "jEnv", null, v$4);
      Node v$6 = GNode.create("Declarators", v$5);
      Node v$7 = GNode.create("FieldDeclaration", v$1, v$2, v$6);
      Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
      Node v$9 = GNode.create("SelectionExpression", v$8, result);
      Node v$10 = GNode.create("ReturnStatement", v$9);
      Node v$11 = GNode.create("Block", v$7, v$10);
      return v$11;
    }
  
    /**
     * Create a block.
     *
     * @param clazz The clazz.
     * @param actuals The actuals.
     * @return The generic node.
     */
    public Node closureStatement(Node clazz, List<Node> actuals) {
      Node v$1 = GNode.create("Modifiers", false);
      Node v$2 = GNode.create("Type", clazz, null);
      Node v$3 = GNode.create("Arguments", actuals.size()).
        addAll(actuals);
      Node v$4 = GNode.create("NewClassExpression", null, null, clazz, v$3, 
        null);
      Node v$5 = GNode.create("Declarator", "jEnv", null, v$4);
      Node v$6 = GNode.create("Declarators", v$5);
      Node v$7 = GNode.create("FieldDeclaration", v$1, v$2, v$6);
      Node v$8 = GNode.create("Block", v$7);
      return v$8;
    }
  
    /**
     * Create a field declaration.
     *
     * @param type The type.
     * @param name The name.
     * @return The generic node.
     */
    public Node declareField(Node type, String name) {
      Node v$1 = GNode.create("Modifiers", false);
      Node v$2 = GNode.create("Type", type, null);
  