// ===========================================================================
// This file has been generated by
// xtc Factory Factory, version 1.13.1,
// (C) 2004-2007 Robert Grimm,
// on Tuesday, September 25, 2007 at 8:00:25 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.JeannieCFactory</code>.
 *
 * <p />This class has been generated by
 * the xtc Factory Factory, version 1.13.1,
 * (C) 2004-2007 Robert Grimm.
 */
public class JeannieCFactory {

  /** Create a new node factory. */
  public JeannieCFactory() {
    // Nothing to do.
  }

  /**
   * Create an if statement.
   *
   * @param fieldName The fieldName.
   * @param abruptFlowJump The abruptFlowJump.
   * @return The generic node.
   */
  public Node abruptFlowCheck(Node fieldName, Node abruptFlowJump) {
    Node v$1 = GNode.create("PrimaryIdentifier", "env");
    Node v$2 = GNode.create("IndirectionExpression", v$1);
    Node v$3 = GNode.create("IndirectComponentSelection", v$2, 
      "ExceptionCheck");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("ExpressionList", v$4);
    Node v$6 = GNode.create("FunctionCall", v$3, v$5);
    Node v$7 = GNode.create("TypedefName", "jclass");
    Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
    Node v$9 = GNode.create("SimpleDeclarator", "cls");
    Node v$10 = GNode.create("PrimaryIdentifier", "env");
    Node v$11 = GNode.create("IndirectionExpression", v$10);
    Node v$12 = GNode.create("IndirectComponentSelection", v$11, 
      "GetObjectClass");
    Node v$13 = GNode.create("PrimaryIdentifier", "env");
    Node v$14 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$15 = GNode.create("ExpressionList", v$13, v$14);
    Node v$16 = GNode.create("FunctionCall", v$12, v$15);
    Node v$17 = GNode.create("InitializedDeclarator", null, v$9, null, null, 
      v$16);
    Node v$18 = GNode.create("InitializedDeclaratorList", v$17);
    Node v$19 = GNode.create("Declaration", null, v$8, v$18);
    Node v$20 = GNode.create("TypedefName", "jfieldID");
    Node v$21 = GNode.create("DeclarationSpecifiers", v$20);
    Node v$22 = GNode.create("SimpleDeclarator", "fid");
    Node v$23 = GNode.create("PrimaryIdentifier", "env");
    Node v$24 = GNode.create("IndirectionExpression", v$23);
    Node v$25 = GNode.create("IndirectComponentSelection", v$24, 
      "GetFieldID");
    Node v$26 = GNode.create("PrimaryIdentifier", "env");
    Node v$27 = GNode.create("PrimaryIdentifier", "cls");
    Node v$28 = GNode.create("StringConstant", "\"Z\"");
    Node v$29 = GNode.create("ExpressionList", v$26, v$27, fieldName, v$28);
    Node v$30 = GNode.create("FunctionCall", v$25, v$29);
    Node v$31 = GNode.create("InitializedDeclarator", null, v$22, null, null, 
      v$30);
    Node v$32 = GNode.create("InitializedDeclaratorList", v$31);
    Node v$33 = GNode.create("Declaration", null, v$21, v$32);
    Node v$34 = GNode.create("TypedefName", "jboolean");
    Node v$35 = GNode.create("DeclarationSpecifiers", v$34);
    Node v$36 = GNode.create("SimpleDeclarator", "tmp");
    Node v$37 = GNode.create("PrimaryIdentifier", "env");
    Node v$38 = GNode.create("IndirectionExpression", v$37);
    Node v$39 = GNode.create("IndirectComponentSelection", v$38, 
      "GetBooleanField");
    Node v$40 = GNode.create("PrimaryIdentifier", "env");
    Node v$41 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$42 = GNode.create("PrimaryIdentifier", "fid");
    Node v$43 = GNode.create("ExpressionList", v$40, v$41, v$42);
    Node v$44 = GNode.create("FunctionCall", v$39, v$43);
    Node v$45 = GNode.create("InitializedDeclarator", null, v$36, null, null, 
      v$44);
    Node v$46 = GNode.create("InitializedDeclaratorList", v$45);
    Node v$47 = GNode.create("Declaration", null, v$35, v$46);
    Node v$48 = GNode.create("PrimaryIdentifier", "env");
    Node v$49 = GNode.create("IndirectionExpression", v$48);
    Node v$50 = GNode.create("IndirectComponentSelection", v$49, 
      "DeleteLocalRef");
    Node v$51 = GNode.create("PrimaryIdentifier", "env");
    Node v$52 = GNode.create("PrimaryIdentifier", "cls");
    Node v$53 = GNode.create("ExpressionList", v$51, v$52);
    Node v$54 = GNode.create("FunctionCall", v$50, v$53);
    Node v$55 = GNode.create("ExpressionStatement", v$54);
    Node v$56 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$57 = GNode.create("ExpressionStatement", v$56);
    Node v$58 = GNode.create("CompoundStatement", v$19, v$33, v$47, v$55, 
      v$57, null);
    Node v$59 = GNode.create("StatementAsExpression", v$58);
    Node v$60 = GNode.create("LogicalOrExpression", v$6, v$59);
    Node v$61 = GNode.create("CompoundStatement", abruptFlowJump, null);
    Node v$62 = GNode.create("IfStatement", v$60, v$61);
    return v$62;
  }

  /**
   * Create a compound statement.
   *
   * @param releaseAbrupt The releaseAbrupt.
   * @param fieldName The fieldName.
   * @param abruptFlowJump The abruptFlowJump.
   * @return The generic node.
   */
  public Node abruptFlowCheckOpenArray(String releaseAbrupt, Node fieldName, 
                                       Node abruptFlowJump) {
    Node v$1 = GNode.create("PrimaryIdentifier", "env");
    Node v$2 = GNode.create("IndirectionExpression", v$1);
    Node v$3 = GNode.create("IndirectComponentSelection", v$2, 
      "ExceptionCheck");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("ExpressionList", v$4);
    Node v$6 = GNode.create("FunctionCall", v$3, v$5);
    Node v$7 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$8 = GNode.create("IndirectComponentSelection", v$7, releaseAbrupt);
    Node v$9 = GNode.create("IntegerConstant", "2");
    Node v$10 = GNode.create("AssignmentExpression", v$8, "=", v$9);
    Node v$11 = GNode.create("ExpressionStatement", v$10);
    Node v$12 = GNode.create("IfStatement", v$6, v$11);
    Node v$13 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$14 = GNode.create("IndirectComponentSelection", v$13, 
      releaseAbrupt);
    Node v$15 = GNode.create("TypedefName", "jclass");
    Node v$16 = GNode.create("DeclarationSpecifiers", v$15);
    Node v$17 = GNode.create("SimpleDeclarator", "cls");
    Node v$18 = GNode.create("PrimaryIdentifier", "env");
    Node v$19 = GNode.create("IndirectionExpression", v$18);
    Node v$20 = GNode.create("IndirectComponentSelection", v$19, 
      "GetObjectClass");
    Node v$21 = GNode.create("PrimaryIdentifier", "env");
    Node v$22 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$23 = GNode.create("ExpressionList", v$21, v$22);
    Node v$24 = GNode.create("FunctionCall", v$20, v$23);
    Node v$25 = GNode.create("InitializedDeclarator", null, v$17, null, null, 
      v$24);
    Node v$26 = GNode.create("InitializedDeclaratorList", v$25);
    Node v$27 = GNode.create("Declaration", null, v$16, v$26);
    Node v$28 = GNode.create("TypedefName", "jfieldID");
    Node v$29 = GNode.create("DeclarationSpecifiers", v$28);
    Node v$30 = GNode.create("SimpleDeclarator", "fid");
    Node v$31 = GNode.create("PrimaryIdentifier", "env");
    Node v$32 = GNode.create("IndirectionExpression", v$31);
    Node v$33 = GNode.create("IndirectComponentSelection", v$32, 
      "GetFieldID");
    Node v$34 = GNode.create("PrimaryIdentifier", "env");
    Node v$35 = GNode.create("PrimaryIdentifier", "cls");
    Node v$36 = GNode.create("StringConstant", "\"Z\"");
    Node v$37 = GNode.create("ExpressionList", v$34, v$35, fieldName, v$36);
    Node v$38 = GNode.create("FunctionCall", v$33, v$37);
    Node v$39 = GNode.create("InitializedDeclarator", null, v$30, null, null, 
      v$38);
    Node v$40 = GNode.create("InitializedDeclaratorList", v$39);
    Node v$41 = GNode.create("Declaration", null, v$29, v$40);
    Node v$42 = GNode.create("TypedefName", "jboolean");
    Node v$43 = GNode.create("DeclarationSpecifiers", v$42);
    Node v$44 = GNode.create("SimpleDeclarator", "tmp");
    Node v$45 = GNode.create("PrimaryIdentifier", "env");
    Node v$46 = GNode.create("IndirectionExpression", v$45);
    Node v$47 = GNode.create("IndirectComponentSelection", v$46, 
      "GetBooleanField");
    Node v$48 = GNode.create("PrimaryIdentifier", "env");
    Node v$49 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$50 = GNode.create("PrimaryIdentifier", "fid");
    Node v$51 = GNode.create("ExpressionList", v$48, v$49, v$50);
    Node v$52 = GNode.create("FunctionCall", v$47, v$51);
    Node v$53 = GNode.create("InitializedDeclarator", null, v$44, null, null, 
      v$52);
    Node v$54 = GNode.create("InitializedDeclaratorList", v$53);
    Node v$55 = GNode.create("Declaration", null, v$43, v$54);
    Node v$56 = GNode.create("PrimaryIdentifier", "env");
    Node v$57 = GNode.create("IndirectionExpression", v$56);
    Node v$58 = GNode.create("IndirectComponentSelection", v$57, 
      "DeleteLocalRef");
    Node v$59 = GNode.create("PrimaryIdentifier", "env");
    Node v$60 = GNode.create("PrimaryIdentifier", "cls");
    Node v$61 = GNode.create("ExpressionList", v$59, v$60);
    Node v$62 = GNode.create("FunctionCall", v$58, v$61);
    Node v$63 = GNode.create("ExpressionStatement", v$62);
    Node v$64 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$65 = GNode.create("ExpressionStatement", v$64);
    Node v$66 = GNode.create("CompoundStatement", v$27, v$41, v$55, v$63, 
      v$65, null);
    Node v$67 = GNode.create("StatementAsExpression", v$66);
    Node v$68 = GNode.create("LogicalOrExpression", v$14, v$67);
    Node v$69 = GNode.create("CompoundStatement", abruptFlowJump, null);
    Node v$70 = GNode.create("IfStatement", v$68, v$69);
    Node v$71 = GNode.create("CompoundStatement", v$12, v$70, null);
    return v$71;
  }

  /**
   * Create a goto statement.
   *
   * @param label The label.
   * @return The generic node.
   */
  public Node abruptFlowJumpOpenArray(String label) {
    Node v$1 = GNode.create("PrimaryIdentifier", label);
    Node v$2 = GNode.create("GotoStatement", null, v$1);
    return v$2;
  }

  /**
   * Create a compound statement.
   *
   * @param statements The statements.
   * @return The generic node.
   */
  public Node block(List<Node> statements) {
    Node v$1 = GNode.create("CompoundStatement", statements.size() + 1).
      addAll(statements).add(null);
    return v$1;
  }

  /**
   * Create a compound statement.
   *
   * @param releaseAbrupt The releaseAbrupt.
   * @param abruptFlowJump The abruptFlowJump.
   * @return The generic node.
   */
  public Node cancel(String releaseAbrupt, Node abruptFlowJump) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, releaseAbrupt);
    Node v$3 = GNode.create("IntegerConstant", "2");
    Node v$4 = GNode.create("AssignmentExpression", v$2, "=", v$3);
    Node v$5 = GNode.create("ExpressionStatement", v$4);
    Node v$6 = GNode.create("CompoundStatement", v$5, abruptFlowJump, null);
    return v$6;
  }

  /**
   * Create a statement as expression.
   *
   * @param tmpDeclaration The tmpDeclaration.
   * @param call The call.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node checkedFunctionCallResult(Node tmpDeclaration, Node call, 
                                        Node abruptFlowCheck) {
    Node v$1 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$2 = GNode.create("AssignmentExpression", v$1, "=", call);
    Node v$3 = GNode.create("ExpressionStatement", v$2);
    Node v$4 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$5 = GNode.create("ExpressionStatement", v$4);
    Node v$6 = GNode.create("CompoundStatement", tmpDeclaration, v$3, 
      abruptFlowCheck, v$5, null);
    Node v$7 = GNode.create("StatementAsExpression", v$6);
    return v$7;
  }

  /**
   * Create a compound statement.
   *
   * @param call The call.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node checkedFunctionCallVoid(Node call, Node abruptFlowCheck) {
    Node v$1 = GNode.create("ExpressionStatement", call);
    Node v$2 = GNode.create("CompoundStatement", v$1, abruptFlowCheck, null);
    return v$2;
  }

  /**
   * Create a compound statement.
   *
   * @param tag The tag.
   * @param expression The expression.
   * @return The generic node.
   */
  public Node cInJavaExpressionWithCEnv(String tag, Node expression) {
    Node v$1 = GNode.create("StructureTypeReference", null, tag);
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("TypeQualifierList", false);
    Node v$4 = GNode.create("Pointer", v$3, null);
    Node v$5 = GNode.create("SimpleDeclarator", "pcEnv");
    Node v$6 = GNode.create("PointerDeclarator", v$4, v$5);
    Node v$7 = GNode.create("StructureTypeReference", null, tag);
    Node v$8 = GNode.create("SpecifierQualifierList", v$7);
    Node v$9 = GNode.create("TypeQualifierList", false);
    Node v$10 = GNode.create("Pointer", v$9, null);
    Node v$11 = GNode.create("AbstractDeclarator", v$10, null);
    Node v$12 = GNode.create("TypeName", v$8, v$11);
    Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
    Node v$14 = GNode.create("CastExpression", v$12, v$13);
    Node v$15 = GNode.create("InitializedDeclarator", null, v$6, null, null, 
      v$14);
    Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
    Node v$17 = GNode.create("Declaration", null, v$2, v$16);
    Node v$18 = GNode.create("ReturnStatement", expression);
    Node v$19 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$20 = GNode.create("IntegerConstant", "0");
    Node v$21 = GNode.create("AssignmentExpression", v$19, "=", v$20);
    Node v$22 = GNode.create("ExpressionStatement", v$21);
    Node v$23 = GNode.create("CompoundStatement", v$17, v$18, v$22, null);
    return v$23;
  }

  /**
   * Create a compound statement.
   *
   * @param tag The tag.
   * @param expression The expression.
   * @return The generic node.
   */
  public Node cInJavaExpressionWithoutCEnv(String tag, Node expression) {
    Node v$1 = GNode.create("StructureTypeReference", null, tag);
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cEnv");
    Node v$4 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      null);
    Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
    Node v$6 = GNode.create("Declaration", null, v$2, v$5);
    Node v$7 = GNode.create("StructureTypeReference", null, tag);
    Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
    Node v$9 = GNode.create("TypeQualifierList", false);
    Node v$10 = GNode.create("Pointer", v$9, null);
    Node v$11 = GNode.create("SimpleDeclarator", "pcEnv");
    Node v$12 = GNode.create("PointerDeclarator", v$10, v$11);
    Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
    Node v$14 = GNode.create("AddressExpression", v$13);
    Node v$15 = GNode.create("InitializedDeclarator", null, v$12, null, null, 
      v$14);
    Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
    Node v$17 = GNode.create("Declaration", null, v$8, v$16);
    Node v$18 = GNode.create("ReturnStatement", expression);
    Node v$19 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$20 = GNode.create("IntegerConstant", "0");
    Node v$21 = GNode.create("AssignmentExpression", v$19, "=", v$20);
    Node v$22 = GNode.create("ExpressionStatement", v$21);
    Node v$23 = GNode.create("CompoundStatement", v$6, v$17, v$18, v$22, 
      null);
    return v$23;
  }

  /**
   * Create a compound statement.
   *
   * @param tag The tag.
   * @param statement The statement.
   * @return The generic node.
   */
  public Node cInJavaStatementWithCEnv(String tag, Node statement) {
    Node v$1 = GNode.create("StructureTypeReference", null, tag);
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("TypeQualifierList", false);
    Node v$4 = GNode.create("Pointer", v$3, null);
    Node v$5 = GNode.create("SimpleDeclarator", "pcEnv");
    Node v$6 = GNode.create("PointerDeclarator", v$4, v$5);
    Node v$7 = GNode.create("StructureTypeReference", null, tag);
    Node v$8 = GNode.create("SpecifierQualifierList", v$7);
    Node v$9 = GNode.create("TypeQualifierList", false);
    Node v$10 = GNode.create("Pointer", v$9, null);
    Node v$11 = GNode.create("AbstractDeclarator", v$10, null);
    Node v$12 = GNode.create("TypeName", v$8, v$11);
    Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
    Node v$14 = GNode.create("CastExpression", v$12, v$13);
    Node v$15 = GNode.create("InitializedDeclarator", null, v$6, null, null, 
      v$14);
    Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
    Node v$17 = GNode.create("Declaration", null, v$2, v$16);
    Node v$18 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$19 = GNode.create("IntegerConstant", "0");
    Node v$20 = GNode.create("AssignmentExpression", v$18, "=", v$19);
    Node v$21 = GNode.create("ExpressionStatement", v$20);
    Node v$22 = GNode.create("CompoundStatement", v$17, statement, v$21, 
      null);
    return v$22;
  }

  /**
   * Create a compound statement.
   *
   * @param tag The tag.
   * @param statement The statement.
   * @return The generic node.
   */
  public Node cInJavaStatementWithoutCEnv(String tag, Node statement) {
    Node v$1 = GNode.create("StructureTypeReference", null, tag);
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cEnv");
    Node v$4 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      null);
    Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
    Node v$6 = GNode.create("Declaration", null, v$2, v$5);
    Node v$7 = GNode.create("StructureTypeReference", null, tag);
    Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
    Node v$9 = GNode.create("TypeQualifierList", false);
    Node v$10 = GNode.create("Pointer", v$9, null);
    Node v$11 = GNode.create("SimpleDeclarator", "pcEnv");
    Node v$12 = GNode.create("PointerDeclarator", v$10, v$11);
    Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
    Node v$14 = GNode.create("AddressExpression", v$13);
    Node v$15 = GNode.create("InitializedDeclarator", null, v$12, null, null, 
      v$14);
    Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
    Node v$17 = GNode.create("Declaration", null, v$8, v$16);
    Node v$18 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$19 = GNode.create("IntegerConstant", "0");
    Node v$20 = GNode.create("AssignmentExpression", v$18, "=", v$19);
    Node v$21 = GNode.create("ExpressionStatement", v$20);
    Node v$22 = GNode.create("CompoundStatement", v$6, v$17, statement, v$21, 
      null);
    return v$22;
  }

  /**
   * Create a compound statement.
   *
   * @param tag The tag.
   * @param copyFormals The copyFormals.
   * @param className The className.
   * @param statement The statement.
   * @return The generic node.
   */
  public Node closureStatement(String tag, Node copyFormals, Node className, 
                               Node statement) {
    Node v$1 = GNode.create("StructureTypeReference", null, tag);
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cEnv");
    Node v$4 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      null);
    Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
    Node v$6 = GNode.create("Declaration", null, v$2, v$5);
    Node v$7 = GNode.create("StructureTypeReference", null, tag);
    Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
    Node v$9 = GNode.create("TypeQualifierList", false);
    Node v$10 = GNode.create("Pointer", v$9, null);
    Node v$11 = GNode.create("SimpleDeclarator", "pcEnv");
    Node v$12 = GNode.create("PointerDeclarator", v$10, v$11);
    Node v$13 = GNode.create("PrimaryIdentifier", "cEnv");
    Node v$14 = GNode.create("AddressExpression", v$13);
    Node v$15 = GNode.create("InitializedDeclarator", null, v$12, null, null, 
      v$14);
    Node v$16 = GNode.create("InitializedDeclaratorList", v$15);
    Node v$17 = GNode.create("Declaration", null, v$8, v$16);
    Node v$18 = GNode.create("TypedefName", "jobject");
    Node v$19 = GNode.create("DeclarationSpecifiers", v$18);
    Node v$20 = GNode.create("SimpleDeclarator", "jEnv");
    Node v$21 = GNode.create("TypedefName", "jclass");
    Node v$22 = GNode.create("DeclarationSpecifiers", v$21);
    Node v$23 = GNode.create("SimpleDeclarator", "cls");
    Node v$24 = GNode.create("PrimaryIdentifier", "env");
    Node v$25 = GNode.create("IndirectionExpression", v$24);
    Node v$26 = GNode.create("IndirectComponentSelection", v$25, "FindClass");
    Node v$27 = GNode.create("PrimaryIdentifier", "env");
    Node v$28 = GNode.create("ExpressionList", v$27, className);
    Node v$29 = GNode.create("FunctionCall", v$26, v$28);
    Node v$30 = GNode.create("InitializedDeclarator", null, v$23, null, null, 
      v$29);
    Node v$31 = GNode.create("InitializedDeclaratorList", v$30);
    Node v$32 = GNode.create("Declaration", null, v$22, v$31);
    Node v$33 = GNode.create("TypedefName", "jmethodID");
    Node v$34 = GNode.create("DeclarationSpecifiers", v$33);
    Node v$35 = GNode.create("SimpleDeclarator", "mid");
    Node v$36 = GNode.create("PrimaryIdentifier", "env");
    Node v$37 = GNode.create("IndirectionExpression", v$36);
    Node v$38 = GNode.create("IndirectComponentSelection", v$37, 
      "GetMethodID");
    Node v$39 = GNode.create("PrimaryIdentifier", "env");
    Node v$40 = GNode.create("PrimaryIdentifier", "cls");
    Node v$41 = GNode.create("StringConstant", "\"<init>\"");
    Node v$42 = GNode.create("StringConstant", "\"()V\"");
    Node v$43 = GNode.create("ExpressionList", v$39, v$40, v$41, v$42);
    Node v$44 = GNode.create("FunctionCall", v$38, v$43);
    Node v$45 = GNode.create("InitializedDeclarator", null, v$35, null, null, 
      v$44);
    Node v$46 = GNode.create("InitializedDeclaratorList", v$45);
    Node v$47 = GNode.create("Declaration", null, v$34, v$46);
    Node v$48 = GNode.create("TypedefName", "jobject");
    Node v$49 = GNode.create("DeclarationSpecifiers", v$48);
    Node v$50 = GNode.create("SimpleDeclarator", "tmp");
    Node v$51 = GNode.create("PrimaryIdentifier", "env");
    Node v$52 = GNode.create("IndirectionExpression", v$51);
    Node v$53 = GNode.create("IndirectComponentSelection", v$52, "NewObject");
    Node v$54 = GNode.create("PrimaryIdentifier", "env");
    Node v$55 = GNode.create("PrimaryIdentifier", "cls");
    Node v$56 = GNode.create("PrimaryIdentifier", "mid");
    Node v$57 = GNode.create("ExpressionList", v$54, v$55, v$56);
    Node v$58 = GNode.create("FunctionCall", v$53, v$57);
    Node v$59 = GNode.create("InitializedDeclarator", null, v$50, null, null, 
      v$58);
    Node v$60 = GNode.create("InitializedDeclaratorList", v$59);
    Node v$61 = GNode.create("Declaration", null, v$49, v$60);
    Node v$62 = GNode.create("PrimaryIdentifier", "env");
    Node v$63 = GNode.create("IndirectionExpression", v$62);
    Node v$64 = GNode.create("IndirectComponentSelection", v$63, 
      "DeleteLocalRef");
    Node v$65 = GNode.create("PrimaryIdentifier", "env");
    Node v$66 = GNode.create("PrimaryIdentifier", "cls");
    Node v$67 = GNode.create("ExpressionList", v$65, v$66);
    Node v$68 = GNode.create("FunctionCall", v$64, v$67);
    Node v$69 = GNode.create("ExpressionStatement", v$68);
    Node v$70 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$71 = GNode.create("ExpressionStatement", v$70);
    Node v$72 = GNode.create("CompoundStatement", v$32, v$47, v$61, v$69, 
      v$71, null);
    Node v$73 = GNode.create("StatementAsExpression", v$72);
    Node v$74 = GNode.create("InitializedDeclarator", null, v$20, null, null, 
      v$73);
    Node v$75 = GNode.create("InitializedDeclaratorList", v$74);
    Node v$76 = GNode.create("Declaration", null, v$19, v$75);
    Node v$77 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$78 = GNode.create("IntegerConstant", "0");
    Node v$79 = GNode.create("AssignmentExpression", v$77, "=", v$78);
    Node v$80 = GNode.create("ExpressionStatement", v$79);
    Node v$81 = GNode.create("CompoundStatement", v$6, v$17, copyFormals, 
      v$76, statement, v$80, null);
    return v$81;
  }

  /**
   * Create a compound statement.
   *
   * @param releaseAbrupt The releaseAbrupt.
   * @param abruptFlowJump The abruptFlowJump.
   * @return The generic node.
   */
  public Node commit(String releaseAbrupt, Node abruptFlowJump) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, releaseAbrupt);
    Node v$3 = GNode.create("IntegerConstant", "1");
    Node v$4 = GNode.create("AssignmentExpression", v$2, "=", v$3);
    Node v$5 = GNode.create("ExpressionStatement", v$4);
    Node v$6 = GNode.create("CompoundStatement", v$5, abruptFlowJump, null);
    return v$6;
  }

  /**
   * Create a statement as expression.
   *
   * @param apiFunction The apiFunction.
   * @param javaArray The javaArray.
   * @param javaArrayStart The javaArrayStart.
   * @param length The length.
   * @param cArray The cArray.
   * @param cArrayStart The cArrayStart.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node copyBetweenJavaAndC(String apiFunction, Node javaArray, 
                                  Node javaArrayStart, Node length, 
                                  Node cArray, Node cArrayStart, 
                                  Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jint");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "length");
    Node v$4 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      null);
    Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
    Node v$6 = GNode.create("Declaration", null, v$2, v$5);
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("IndirectionExpression", v$7);
    Node v$9 = GNode.create("IndirectComponentSelection", v$8, apiFunction);
    Node v$10 = GNode.create("PrimaryIdentifier", "env");
    Node v$11 = GNode.create("PrimaryIdentifier", "length");
    Node v$12 = GNode.create("AssignmentExpression", v$11, "=", length);
    Node v$13 = GNode.create("AdditiveExpression", cArray, "+", cArrayStart);
    Node v$14 = GNode.create("ExpressionList", v$10, javaArray, 
      javaArrayStart, v$12, v$13);
    Node v$15 = GNode.create("FunctionCall", v$9, v$14);
    Node v$16 = GNode.create("ExpressionStatement", v$15);
    Node v$17 = GNode.create("PrimaryIdentifier", "length");
    Node v$18 = GNode.create("ExpressionStatement", v$17);
    Node v$19 = GNode.create("CompoundStatement", v$6, v$16, abruptFlowCheck, 
      v$18, null);
    Node v$20 = GNode.create("StatementAsExpression", v$19);
    return v$20;
  }

  /**
   * Create a statement as expression.
   *
   * @param javaArray The javaArray.
   * @param javaArrayStart The javaArrayStart.
   * @param length The length.
   * @param apiFunction The apiFunction.
   * @param cArray The cArray.
   * @param cArrayStart The cArrayStart.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node copyBetweenJavaAndCUTF(Node javaArray, Node javaArrayStart, 
                                     Node length, String apiFunction, 
                                     Node cArray, Node cArrayStart, 
                                     Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jstring");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "javaArray");
    Node v$4 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      javaArray);
    Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
    Node v$6 = GNode.create("Declaration", null, v$2, v$5);
    Node v$7 = GNode.create("TypedefName", "jint");
    Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
    Node v$9 = GNode.create("SimpleDeclarator", "start");
    Node v$10 = GNode.create("InitializedDeclarator", null, v$9, null, null, 
      javaArrayStart);
    Node v$11 = GNode.create("SimpleDeclarator", "length");
    Node v$12 = GNode.create("InitializedDeclarator", null, v$11, null, null, 
      length);
    Node v$13 = GNode.create("InitializedDeclaratorList", v$10, v$12);
    Node v$14 = GNode.create("Declaration", null, v$8, v$13);
    Node v$15 = GNode.create("PrimaryIdentifier", "env");
    Node v$16 = GNode.create("IndirectionExpression", v$15);
    Node v$17 = GNode.create("IndirectComponentSelection", v$16, apiFunction);
    Node v$18 = GNode.create("PrimaryIdentifier", "env");
    Node v$19 = GNode.create("PrimaryIdentifier", "javaArray");
    Node v$20 = GNode.create("PrimaryIdentifier", "start");
    Node v$21 = GNode.create("PrimaryIdentifier", "length");
    Node v$22 = GNode.create("Char", false);
    Node v$23 = GNode.create("SpecifierQualifierList", v$22);
    Node v$24 = GNode.create("TypeQualifierList", false);
    Node v$25 = GNode.create("Pointer", v$24, null);
    Node v$26 = GNode.create("AbstractDeclarator", v$25, null);
    Node v$27 = GNode.create("TypeName", v$23, v$26);
    Node v$28 = GNode.create("AdditiveExpression", cArray, "+", cArrayStart);
    Node v$29 = GNode.create("CastExpression", v$27, v$28);
    Node v$30 = GNode.create("ExpressionList", v$18, v$19, v$20, v$21, v$29);
    Node v$31 = GNode.create("FunctionCall", v$17, v$30);
    Node v$32 = GNode.create("ExpressionStatement", v$31);
    Node v$33 = GNode.create("PrimaryIdentifier", "_stringUTFLength");
    Node v$34 = GNode.create("PrimaryIdentifier", "env");
    Node v$35 = GNode.create("PrimaryIdentifier", "javaArray");
    Node v$36 = GNode.create("PrimaryIdentifier", "start");
    Node v$37 = GNode.create("PrimaryIdentifier", "length");
    Node v$38 = GNode.create("ExpressionList", v$34, v$35, v$36, v$37);
    Node v$39 = GNode.create("FunctionCall", v$33, v$38);
    Node v$40 = GNode.create("ExpressionStatement", v$39);
    Node v$41 = GNode.create("CompoundStatement", v$6, v$14, v$32, 
      abruptFlowCheck, v$40, null);
    Node v$42 = GNode.create("StatementAsExpression", v$41);
    return v$42;
  }

  /**
   * Create a statement as expression.
   *
   * @param javaArray The javaArray.
   * @param javaArrayStart The javaArrayStart.
   * @param length The length.
   * @param cArray The cArray.
   * @param cArrayStart The cArrayStart.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node copyFromJavaReference(Node javaArray, Node javaArrayStart, 
                                    Node length, Node cArray, 
                                    Node cArrayStart, Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jobjectArray");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "javaArray");
    Node v$4 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      javaArray);
    Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
    Node v$6 = GNode.create("Declaration", null, v$2, v$5);
    Node v$7 = GNode.create("TypedefName", "jint");
    Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
    Node v$9 = GNode.create("SimpleDeclarator", "start");
    Node v$10 = GNode.create("InitializedDeclarator", null, v$9, null, null, 
      javaArrayStart);
    Node v$11 = GNode.create("SimpleDeclarator", "length");
    Node v$12 = GNode.create("InitializedDeclarator", null, v$11, null, null, 
      length);
    Node v$13 = GNode.create("InitializedDeclaratorList", v$10, v$12);
    Node v$14 = GNode.create("Declaration", null, v$8, v$13);
    Node v$15 = GNode.create("TypedefName", "jobject");
    Node v$16 = GNode.create("DeclarationSpecifiers", v$15);
    Node v$17 = GNode.create("TypeQualifierList", false);
    Node v$18 = GNode.create("Pointer", v$17, null);
    Node v$19 = GNode.create("SimpleDeclarator", "cArray");
    Node v$20 = GNode.create("PointerDeclarator", v$18, v$19);
    Node v$21 = GNode.create("AdditiveExpression", cArray, "+", cArrayStart);
    Node v$22 = GNode.create("InitializedDeclarator", null, v$20, null, null, 
      v$21);
    Node v$23 = GNode.create("InitializedDeclaratorList", v$22);
    Node v$24 = GNode.create("Declaration", null, v$16, v$23);
    Node v$25 = GNode.create("TypedefName", "jint");
    Node v$26 = GNode.create("DeclarationSpecifiers", v$25);
    Node v$27 = GNode.create("SimpleDeclarator", "i");
    Node v$28 = GNode.create("InitializedDeclarator", null, v$27, null, null, 
      null);
    Node v$29 = GNode.create("InitializedDeclaratorList", v$28);
    Node v$30 = GNode.create("Declaration", null, v$26, v$29);
    Node v$31 = GNode.create("PrimaryIdentifier", "i");
    Node v$32 = GNode.create("IntegerConstant", "0");
    Node v$33 = GNode.create("AssignmentExpression", v$31, "=", v$32);
    Node v$34 = GNode.create("PrimaryIdentifier", "i");
    Node v$35 = GNode.create("PrimaryIdentifier", "length");
    Node v$36 = GNode.create("RelationalExpression", v$34, "<", v$35);
    Node v$37 = GNode.create("PrimaryIdentifier", "i");
    Node v$38 = GNode.create("PostincrementExpression", v$37);
    Node v$39 = GNode.create("PrimaryIdentifier", "cArray");
    Node v$40 = GNode.create("PrimaryIdentifier", "i");
    Node v$41 = GNode.create("SubscriptExpression", v$39, v$40);
    Node v$42 = GNode.create("PrimaryIdentifier", "env");
    Node v$43 = GNode.create("IndirectionExpression", v$42);
    Node v$44 = GNode.create("IndirectComponentSelection", v$43, 
      "GetObjectArrayElement");
    Node v$45 = GNode.create("PrimaryIdentifier", "env");
    Node v$46 = GNode.create("PrimaryIdentifier", "javaArray");
    Node v$47 = GNode.create("PrimaryIdentifier", "start");
    Node v$48 = GNode.create("PrimaryIdentifier", "i");
    Node v$49 = GNode.create("AdditiveExpression", v$47, "+", v$48);
    Node v$50 = GNode.create("ExpressionList", v$45, v$46, v$49);
    Node v$51 = GNode.create("FunctionCall", v$44, v$50);
    Node v$52 = GNode.create("AssignmentExpression", v$41, "=", v$51);
    Node v$53 = GNode.create("ExpressionStatement", v$52);
    Node v$54 = GNode.create("PrimaryIdentifier", "env");
    Node v$55 = GNode.create("IndirectionExpression", v$54);
    Node v$56 = GNode.create("IndirectComponentSelection", v$55, 
      "ExceptionCheck");
    Node v$57 = GNode.create("PrimaryIdentifier", "env");
    Node v$58 = GNode.create("ExpressionList", v$57);
    Node v$59 = GNode.create("FunctionCall", v$56, v$58);
    Node v$60 = GNode.create("BreakStatement", false);
    Node v$61 = GNode.create("IfStatement", v$59, v$60);
    Node v$62 = GNode.create("CompoundStatement", v$53, v$61, null);
    Node v$63 = GNode.create("ForStatement", v$33, v$36, v$38, v$62);
    Node v$64 = GNode.create("PrimaryIdentifier", "length");
    Node v$65 = GNode.create("ExpressionStatement", v$64);
    Node v$66 = GNode.create("CompoundStatement", v$6, v$14, v$24, v$30, 
      v$63, abruptFlowCheck, v$65, null);
    Node v$67 = GNode.create("StatementAsExpression", v$66);
    return v$67;
  }

  /**
   * Create a statement as expression.
   *
   * @param javaArray The javaArray.
   * @param javaArrayStart The javaArrayStart.
   * @param length The length.
   * @param cArray The cArray.
   * @param cArrayStart The cArrayStart.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node copyToJavaReference(Node javaArray, Node javaArrayStart, 
                                  Node length, Node cArray, Node cArrayStart, 
                                  Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jobjectArray");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "javaArray");
    Node v$4 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      javaArray);
    Node v$5 = GNode.create("InitializedDeclaratorList", v$4);
    Node v$6 = GNode.create("Declaration", null, v$2, v$5);
    Node v$7 = GNode.create("TypedefName", "jint");
    Node v$8 = GNode.create("DeclarationSpecifiers", v$7);
    Node v$9 = GNode.create("SimpleDeclarator", "start");
    Node v$10 = GNode.create("InitializedDeclarator", null, v$9, null, null, 
      javaArrayStart);
    Node v$11 = GNode.create("SimpleDeclarator", "length");
    Node v$12 = GNode.create("InitializedDeclarator", null, v$11, null, null, 
      length);
    Node v$13 = GNode.create("InitializedDeclaratorList", v$10, v$12);
    Node v$14 = GNode.create("Declaration", null, v$8, v$13);
    Node v$15 = GNode.create("TypedefName", "jobject");
    Node v$16 = GNode.create("DeclarationSpecifiers", v$15);
    Node v$17 = GNode.create("TypeQualifierList", false);
    Node v$18 = GNode.create("Pointer", v$17, null);
    Node v$19 = GNode.create("SimpleDeclarator", "cArray");
    Node v$20 = GNode.create("PointerDeclarator", v$18, v$19);
    Node v$21 = GNode.create("AdditiveExpression", cArray, "+", cArrayStart);
    Node v$22 = GNode.create("InitializedDeclarator", null, v$20, null, null, 
      v$21);
    Node v$23 = GNode.create("InitializedDeclaratorList", v$22);
    Node v$24 = GNode.create("Declaration", null, v$16, v$23);
    Node v$25 = GNode.create("TypedefName", "jint");
    Node v$26 = GNode.create("DeclarationSpecifiers", v$25);
    Node v$27 = GNode.create("SimpleDeclarator", "i");
    Node v$28 = GNode.create("InitializedDeclarator", null, v$27, null, null, 
      null);
    Node v$29 = GNode.create("InitializedDeclaratorList", v$28);
    Node v$30 = GNode.create("Declaration", null, v$26, v$29);
    Node v$31 = GNode.create("PrimaryIdentifier", "i");
    Node v$32 = GNode.create("IntegerConstant", "0");
    Node v$33 = GNode.create("AssignmentExpression", v$31, "=", v$32);
    Node v$34 = GNode.create("PrimaryIdentifier", "i");
    Node v$35 = GNode.create("PrimaryIdentifier", "length");
    Node v$36 = GNode.create("RelationalExpression", v$34, "<", v$35);
    Node v$37 = GNode.create("PrimaryIdentifier", "i");
    Node v$38 = GNode.create("PostincrementExpression", v$37);
    Node v$39 = GNode.create("PrimaryIdentifier", "env");
    Node v$40 = GNode.create("IndirectionExpression", v$39);
    Node v$41 = GNode.create("IndirectComponentSelection", v$40, 
      "SetObjectArrayElement");
    Node v$42 = GNode.create("PrimaryIdentifier", "env");
    Node v$43 = GNode.create("PrimaryIdentifier", "javaArray");
    Node v$44 = GNode.create("PrimaryIdentifier", "start");
    Node v$45 = GNode.create("PrimaryIdentifier", "i");
    Node v$46 = GNode.create("AdditiveExpression", v$44, "+", v$45);
    Node v$47 = GNode.create("PrimaryIdentifier", "cArray");
    Node v$48 = GNode.create("PrimaryIdentifier", "i");
    Node v$49 = GNode.create("SubscriptExpression", v$47, v$48);
    Node v$50 = GNode.create("ExpressionList", v$42, v$43, v$46, v$49);
    Node v$51 = GNode.create("FunctionCall", v$41, v$50);
    Node v$52 = GNode.create("ExpressionStatement", v$51);
    Node v$53 = GNode.create("PrimaryIdentifier", "env");
    Node v$54 = GNode.create("IndirectionExpression", v$53);
    Node v$55 = GNode.create("IndirectComponentSelection", v$54, 
      "ExceptionCheck");
    Node v$56 = GNode.create("PrimaryIdentifier", "env");
    Node v$57 = GNode.create("ExpressionList", v$56);
    Node v$58 = GNode.create("FunctionCall", v$55, v$57);
    Node v$59 = GNode.create("BreakStatement", false);
    Node v$60 = GNode.create("IfStatement", v$58, v$59);
    Node v$61 = GNode.create("CompoundStatement", v$52, v$60, null);
    Node v$62 = GNode.create("ForStatement", v$33, v$36, v$38, v$61);
    Node v$63 = GNode.create("PrimaryIdentifier", "length");
    Node v$64 = GNode.create("ExpressionStatement", v$63);
    Node v$65 = GNode.create("CompoundStatement", v$6, v$14, v$24, v$30, 
      v$62, abruptFlowCheck, v$64, null);
    Node v$66 = GNode.create("StatementAsExpression", v$65);
    return v$66;
  }

  /**
   * Create a declaration.
   *
   * @param tag The tag.
   * @param members The members.
   * @return The generic node.
   */
  public Node declareStruct(String tag, List<Node> members) {
    Node v$1 = GNode.create("StructureDeclarationList", members.size() + 1).
      addAll(members).add(null);
    Node v$2 = GNode.create("StructureTypeDefinition", null, tag, v$1, null);
    Node v$3 = GNode.create("DeclarationSpecifiers", v$2);
    Node v$4 = GNode.create("Declaration", null, v$3, null);
    return v$4;
  }

  /**
   * Create an indirect component selection.
   *
   * @param name The name.
   * @return The generic node.
   */
  public Node getPCEnvField(String name) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, name);
    return v$2;
  }

  /**
   * Create a statement as expression.
   *
   * @param name The name.
   * @param signature The signature.
   * @param tmpDeclaration The tmpDeclaration.
   * @param apiFunction The apiFunction.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node javaInCExpression32(Node name, Node signature, 
                                  Node tmpDeclaration, String apiFunction, 
                                  Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jclass");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cls");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("IndirectionExpression", v$4);
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, 
      "GetObjectClass");
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$9 = GNode.create("ExpressionList", v$7, v$8);
    Node v$10 = GNode.create("FunctionCall", v$6, v$9);
    Node v$11 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      v$10);
    Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
    Node v$13 = GNode.create("Declaration", null, v$2, v$12);
    Node v$14 = GNode.create("TypedefName", "jmethodID");
    Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
    Node v$16 = GNode.create("SimpleDeclarator", "mid");
    Node v$17 = GNode.create("PrimaryIdentifier", "env");
    Node v$18 = GNode.create("IndirectionExpression", v$17);
    Node v$19 = GNode.create("IndirectComponentSelection", v$18, 
      "GetMethodID");
    Node v$20 = GNode.create("PrimaryIdentifier", "env");
    Node v$21 = GNode.create("PrimaryIdentifier", "cls");
    Node v$22 = GNode.create("ExpressionList", v$20, v$21, name, signature);
    Node v$23 = GNode.create("FunctionCall", v$19, v$22);
    Node v$24 = GNode.create("InitializedDeclarator", null, v$16, null, null, 
      v$23);
    Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
    Node v$26 = GNode.create("Declaration", null, v$15, v$25);
    Node v$27 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$28 = GNode.create("PrimaryIdentifier", "env");
    Node v$29 = GNode.create("IndirectionExpression", v$28);
    Node v$30 = GNode.create("IndirectComponentSelection", v$29, apiFunction);
    Node v$31 = GNode.create("PrimaryIdentifier", "env");
    Node v$32 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$33 = GNode.create("PrimaryIdentifier", "cls");
    Node v$34 = GNode.create("PrimaryIdentifier", "mid");
    Node v$35 = GNode.create("TypedefName", "jint");
    Node v$36 = GNode.create("SpecifierQualifierList", v$35);
    Node v$37 = GNode.create("TypeName", v$36, null);
    Node v$38 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$39 = GNode.create("CastExpression", v$37, v$38);
    Node v$40 = GNode.create("ExpressionList", v$31, v$32, v$33, v$34, v$39);
    Node v$41 = GNode.create("FunctionCall", v$30, v$40);
    Node v$42 = GNode.create("AssignmentExpression", v$27, "=", v$41);
    Node v$43 = GNode.create("ExpressionStatement", v$42);
    Node v$44 = GNode.create("PrimaryIdentifier", "env");
    Node v$45 = GNode.create("IndirectionExpression", v$44);
    Node v$46 = GNode.create("IndirectComponentSelection", v$45, 
      "DeleteLocalRef");
    Node v$47 = GNode.create("PrimaryIdentifier", "env");
    Node v$48 = GNode.create("PrimaryIdentifier", "cls");
    Node v$49 = GNode.create("ExpressionList", v$47, v$48);
    Node v$50 = GNode.create("FunctionCall", v$46, v$49);
    Node v$51 = GNode.create("ExpressionStatement", v$50);
    Node v$52 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$53 = GNode.create("ExpressionStatement", v$52);
    Node v$54 = GNode.create("CompoundStatement", v$13, v$26, tmpDeclaration, 
      v$43, v$51, abruptFlowCheck, v$53, null);
    Node v$55 = GNode.create("StatementAsExpression", v$54);
    return v$55;
  }

  /**
   * Create a statement as expression.
   *
   * @param name The name.
   * @param signature The signature.
   * @param tmpDeclaration The tmpDeclaration.
   * @param apiFunction The apiFunction.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node javaInCExpression64(Node name, Node signature, 
                                  Node tmpDeclaration, String apiFunction, 
                                  Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jclass");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cls");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("IndirectionExpression", v$4);
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, 
      "GetObjectClass");
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$9 = GNode.create("ExpressionList", v$7, v$8);
    Node v$10 = GNode.create("FunctionCall", v$6, v$9);
    Node v$11 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      v$10);
    Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
    Node v$13 = GNode.create("Declaration", null, v$2, v$12);
    Node v$14 = GNode.create("TypedefName", "jmethodID");
    Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
    Node v$16 = GNode.create("SimpleDeclarator", "mid");
    Node v$17 = GNode.create("PrimaryIdentifier", "env");
    Node v$18 = GNode.create("IndirectionExpression", v$17);
    Node v$19 = GNode.create("IndirectComponentSelection", v$18, 
      "GetMethodID");
    Node v$20 = GNode.create("PrimaryIdentifier", "env");
    Node v$21 = GNode.create("PrimaryIdentifier", "cls");
    Node v$22 = GNode.create("ExpressionList", v$20, v$21, name, signature);
    Node v$23 = GNode.create("FunctionCall", v$19, v$22);
    Node v$24 = GNode.create("InitializedDeclarator", null, v$16, null, null, 
      v$23);
    Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
    Node v$26 = GNode.create("Declaration", null, v$15, v$25);
    Node v$27 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$28 = GNode.create("PrimaryIdentifier", "env");
    Node v$29 = GNode.create("IndirectionExpression", v$28);
    Node v$30 = GNode.create("IndirectComponentSelection", v$29, apiFunction);
    Node v$31 = GNode.create("PrimaryIdentifier", "env");
    Node v$32 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$33 = GNode.create("PrimaryIdentifier", "cls");
    Node v$34 = GNode.create("PrimaryIdentifier", "mid");
    Node v$35 = GNode.create("TypedefName", "jlong");
    Node v$36 = GNode.create("SpecifierQualifierList", v$35);
    Node v$37 = GNode.create("TypeName", v$36, null);
    Node v$38 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$39 = GNode.create("CastExpression", v$37, v$38);
    Node v$40 = GNode.create("ExpressionList", v$31, v$32, v$33, v$34, v$39);
    Node v$41 = GNode.create("FunctionCall", v$30, v$40);
    Node v$42 = GNode.create("AssignmentExpression", v$27, "=", v$41);
    Node v$43 = GNode.create("ExpressionStatement", v$42);
    Node v$44 = GNode.create("PrimaryIdentifier", "env");
    Node v$45 = GNode.create("IndirectionExpression", v$44);
    Node v$46 = GNode.create("IndirectComponentSelection", v$45, 
      "DeleteLocalRef");
    Node v$47 = GNode.create("PrimaryIdentifier", "env");
    Node v$48 = GNode.create("PrimaryIdentifier", "cls");
    Node v$49 = GNode.create("ExpressionList", v$47, v$48);
    Node v$50 = GNode.create("FunctionCall", v$46, v$49);
    Node v$51 = GNode.create("ExpressionStatement", v$50);
    Node v$52 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$53 = GNode.create("ExpressionStatement", v$52);
    Node v$54 = GNode.create("CompoundStatement", v$13, v$26, tmpDeclaration, 
      v$43, v$51, abruptFlowCheck, v$53, null);
    Node v$55 = GNode.create("StatementAsExpression", v$54);
    return v$55;
  }

  /**
   * Create a compound statement.
   *
   * @param name The name.
   * @param signature The signature.
   * @param apiFunction The apiFunction.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node javaInCStatement32(Node name, Node signature, 
                                 String apiFunction, Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jclass");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cls");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("IndirectionExpression", v$4);
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, 
      "GetObjectClass");
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$9 = GNode.create("ExpressionList", v$7, v$8);
    Node v$10 = GNode.create("FunctionCall", v$6, v$9);
    Node v$11 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      v$10);
    Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
    Node v$13 = GNode.create("Declaration", null, v$2, v$12);
    Node v$14 = GNode.create("TypedefName", "jmethodID");
    Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
    Node v$16 = GNode.create("SimpleDeclarator", "mid");
    Node v$17 = GNode.create("PrimaryIdentifier", "env");
    Node v$18 = GNode.create("IndirectionExpression", v$17);
    Node v$19 = GNode.create("IndirectComponentSelection", v$18, 
      "GetMethodID");
    Node v$20 = GNode.create("PrimaryIdentifier", "env");
    Node v$21 = GNode.create("PrimaryIdentifier", "cls");
    Node v$22 = GNode.create("ExpressionList", v$20, v$21, name, signature);
    Node v$23 = GNode.create("FunctionCall", v$19, v$22);
    Node v$24 = GNode.create("InitializedDeclarator", null, v$16, null, null, 
      v$23);
    Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
    Node v$26 = GNode.create("Declaration", null, v$15, v$25);
    Node v$27 = GNode.create("PrimaryIdentifier", "env");
    Node v$28 = GNode.create("IndirectionExpression", v$27);
    Node v$29 = GNode.create("IndirectComponentSelection", v$28, apiFunction);
    Node v$30 = GNode.create("PrimaryIdentifier", "env");
    Node v$31 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$32 = GNode.create("PrimaryIdentifier", "cls");
    Node v$33 = GNode.create("PrimaryIdentifier", "mid");
    Node v$34 = GNode.create("TypedefName", "jint");
    Node v$35 = GNode.create("SpecifierQualifierList", v$34);
    Node v$36 = GNode.create("TypeName", v$35, null);
    Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$38 = GNode.create("CastExpression", v$36, v$37);
    Node v$39 = GNode.create("ExpressionList", v$30, v$31, v$32, v$33, v$38);
    Node v$40 = GNode.create("FunctionCall", v$29, v$39);
    Node v$41 = GNode.create("ExpressionStatement", v$40);
    Node v$42 = GNode.create("PrimaryIdentifier", "env");
    Node v$43 = GNode.create("IndirectionExpression", v$42);
    Node v$44 = GNode.create("IndirectComponentSelection", v$43, 
      "DeleteLocalRef");
    Node v$45 = GNode.create("PrimaryIdentifier", "env");
    Node v$46 = GNode.create("PrimaryIdentifier", "cls");
    Node v$47 = GNode.create("ExpressionList", v$45, v$46);
    Node v$48 = GNode.create("FunctionCall", v$44, v$47);
    Node v$49 = GNode.create("ExpressionStatement", v$48);
    Node v$50 = GNode.create("CompoundStatement", v$13, v$26, v$41, v$49, 
      abruptFlowCheck, null);
    return v$50;
  }

  /**
   * Create a compound statement.
   *
   * @param name The name.
   * @param signature The signature.
   * @param apiFunction The apiFunction.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node javaInCStatement64(Node name, Node signature, 
                                 String apiFunction, Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jclass");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cls");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("IndirectionExpression", v$4);
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, 
      "GetObjectClass");
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$9 = GNode.create("ExpressionList", v$7, v$8);
    Node v$10 = GNode.create("FunctionCall", v$6, v$9);
    Node v$11 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      v$10);
    Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
    Node v$13 = GNode.create("Declaration", null, v$2, v$12);
    Node v$14 = GNode.create("TypedefName", "jmethodID");
    Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
    Node v$16 = GNode.create("SimpleDeclarator", "mid");
    Node v$17 = GNode.create("PrimaryIdentifier", "env");
    Node v$18 = GNode.create("IndirectionExpression", v$17);
    Node v$19 = GNode.create("IndirectComponentSelection", v$18, 
      "GetMethodID");
    Node v$20 = GNode.create("PrimaryIdentifier", "env");
    Node v$21 = GNode.create("PrimaryIdentifier", "cls");
    Node v$22 = GNode.create("ExpressionList", v$20, v$21, name, signature);
    Node v$23 = GNode.create("FunctionCall", v$19, v$22);
    Node v$24 = GNode.create("InitializedDeclarator", null, v$16, null, null, 
      v$23);
    Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
    Node v$26 = GNode.create("Declaration", null, v$15, v$25);
    Node v$27 = GNode.create("PrimaryIdentifier", "env");
    Node v$28 = GNode.create("IndirectionExpression", v$27);
    Node v$29 = GNode.create("IndirectComponentSelection", v$28, apiFunction);
    Node v$30 = GNode.create("PrimaryIdentifier", "env");
    Node v$31 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$32 = GNode.create("PrimaryIdentifier", "cls");
    Node v$33 = GNode.create("PrimaryIdentifier", "mid");
    Node v$34 = GNode.create("TypedefName", "jlong");
    Node v$35 = GNode.create("SpecifierQualifierList", v$34);
    Node v$36 = GNode.create("TypeName", v$35, null);
    Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$38 = GNode.create("CastExpression", v$36, v$37);
    Node v$39 = GNode.create("ExpressionList", v$30, v$31, v$32, v$33, v$38);
    Node v$40 = GNode.create("FunctionCall", v$29, v$39);
    Node v$41 = GNode.create("ExpressionStatement", v$40);
    Node v$42 = GNode.create("PrimaryIdentifier", "env");
    Node v$43 = GNode.create("IndirectionExpression", v$42);
    Node v$44 = GNode.create("IndirectComponentSelection", v$43, 
      "DeleteLocalRef");
    Node v$45 = GNode.create("PrimaryIdentifier", "env");
    Node v$46 = GNode.create("PrimaryIdentifier", "cls");
    Node v$47 = GNode.create("ExpressionList", v$45, v$46);
    Node v$48 = GNode.create("FunctionCall", v$44, v$47);
    Node v$49 = GNode.create("ExpressionStatement", v$48);
    Node v$50 = GNode.create("CompoundStatement", v$13, v$26, v$41, v$49, 
      abruptFlowCheck, null);
    return v$50;
  }

  /**
   * Create a statement as expression.
   *
   * @param apiFunction The apiFunction.
   * @param cString The cString.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node newJavaString(String apiFunction, Node cString, 
                            Node abruptFlowCheck) {
    Node v$1 = GNode.create("TypedefName", "jstring");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "tmp");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("IndirectionExpression", v$4);
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, apiFunction);
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("ExpressionList", v$7, cString);
    Node v$9 = GNode.create("FunctionCall", v$6, v$8);
    Node v$10 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      v$9);
    Node v$11 = GNode.create("InitializedDeclaratorList", v$10);
    Node v$12 = GNode.create("Declaration", null, v$2, v$11);
    Node v$13 = GNode.create("PrimaryIdentifier", "tmp");
    Node v$14 = GNode.create("ExpressionStatement", v$13);
    Node v$15 = GNode.create("CompoundStatement", v$12, abruptFlowCheck, 
      v$14, null);
    Node v$16 = GNode.create("StatementAsExpression", v$15);
    return v$16;
  }

  /**
   * Create an expression statement.
   *
   * @param name The name.
   * @param value The value.
   * @return The generic node.
   */
  public Node setPCEnvField(String name, Node value) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, name);
    Node v$3 = GNode.create("AssignmentExpression", v$2, "=", value);
    Node v$4 = GNode.create("ExpressionStatement", v$3);
    return v$4;
  }

  /**
   * Create a function call.
   *
   * @param javaString The javaString.
   * @return The generic node.
   */
  public Node stringUTFLength1(Node javaString) {
    Node v$1 = GNode.create("PrimaryIdentifier", "env");
    Node v$2 = GNode.create("IndirectionExpression", v$1);
    Node v$3 = GNode.create("IndirectComponentSelection", v$2, 
      "GetStringUTFLength");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("ExpressionList", v$4, javaString);
    Node v$6 = GNode.create("FunctionCall", v$3, v$5);
    return v$6;
  }

  /**
   * Create a function call.
   *
   * @param javaString The javaString.
   * @param start The start.
   * @param length The length.
   * @return The generic node.
   */
  public Node stringUTFLength3(Node javaString, Node start, Node length) {
    Node v$1 = GNode.create("PrimaryIdentifier", "_stringUTFLength");
    Node v$2 = GNode.create("PrimaryIdentifier", "env");
    Node v$3 = GNode.create("ExpressionList", v$2, javaString, start, length);
    Node v$4 = GNode.create("FunctionCall", v$1, v$3);
    return v$4;
  }

  /**
   * Create a compound statement.
   *
   * @param result The result.
   * @param signature The signature.
   * @param apiFunction The apiFunction.
   * @param value The value.
   * @param abrupt The abrupt.
   * @param abruptFlowJump The abruptFlowJump.
   * @return The generic node.
   */
  public Node returnResult(Node result, Node signature, String apiFunction, 
                           Node value, Node abrupt, Node abruptFlowJump) {
    Node v$1 = GNode.create("TypedefName", "jclass");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cls");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("IndirectionExpression", v$4);
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, 
      "GetObjectClass");
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$9 = GNode.create("ExpressionList", v$7, v$8);
    Node v$10 = GNode.create("FunctionCall", v$6, v$9);
    Node v$11 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      v$10);
    Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
    Node v$13 = GNode.create("Declaration", null, v$2, v$12);
    Node v$14 = GNode.create("TypedefName", "jfieldID");
    Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
    Node v$16 = GNode.create("SimpleDeclarator", "fidResult");
    Node v$17 = GNode.create("PrimaryIdentifier", "env");
    Node v$18 = GNode.create("IndirectionExpression", v$17);
    Node v$19 = GNode.create("IndirectComponentSelection", v$18, 
      "GetFieldID");
    Node v$20 = GNode.create("PrimaryIdentifier", "env");
    Node v$21 = GNode.create("PrimaryIdentifier", "cls");
    Node v$22 = GNode.create("ExpressionList", v$20, v$21, result, signature);
    Node v$23 = GNode.create("FunctionCall", v$19, v$22);
    Node v$24 = GNode.create("InitializedDeclarator", null, v$16, null, null, 
      v$23);
    Node v$25 = GNode.create("InitializedDeclaratorList", v$24);
    Node v$26 = GNode.create("Declaration", null, v$15, v$25);
    Node v$27 = GNode.create("PrimaryIdentifier", "env");
    Node v$28 = GNode.create("IndirectionExpression", v$27);
    Node v$29 = GNode.create("IndirectComponentSelection", v$28, apiFunction);
    Node v$30 = GNode.create("PrimaryIdentifier", "env");
    Node v$31 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$32 = GNode.create("PrimaryIdentifier", "fidResult");
    Node v$33 = GNode.create("ExpressionList", v$30, v$31, v$32, value);
    Node v$34 = GNode.create("FunctionCall", v$29, v$33);
    Node v$35 = GNode.create("ExpressionStatement", v$34);
    Node v$36 = GNode.create("TypedefName", "jfieldID");
    Node v$37 = GNode.create("DeclarationSpecifiers", v$36);
    Node v$38 = GNode.create("SimpleDeclarator", "fidAbrupt");
    Node v$39 = GNode.create("PrimaryIdentifier", "env");
    Node v$40 = GNode.create("IndirectionExpression", v$39);
    Node v$41 = GNode.create("IndirectComponentSelection", v$40, 
      "GetFieldID");
    Node v$42 = GNode.create("PrimaryIdentifier", "env");
    Node v$43 = GNode.create("PrimaryIdentifier", "cls");
    Node v$44 = GNode.create("StringConstant", "\"Z\"");
    Node v$45 = GNode.create("ExpressionList", v$42, v$43, abrupt, v$44);
    Node v$46 = GNode.create("FunctionCall", v$41, v$45);
    Node v$47 = GNode.create("InitializedDeclarator", null, v$38, null, null, 
      v$46);
    Node v$48 = GNode.create("InitializedDeclaratorList", v$47);
    Node v$49 = GNode.create("Declaration", null, v$37, v$48);
    Node v$50 = GNode.create("PrimaryIdentifier", "env");
    Node v$51 = GNode.create("IndirectionExpression", v$50);
    Node v$52 = GNode.create("IndirectComponentSelection", v$51, 
      "SetBooleanField");
    Node v$53 = GNode.create("PrimaryIdentifier", "env");
    Node v$54 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$55 = GNode.create("PrimaryIdentifier", "fidAbrupt");
    Node v$56 = GNode.create("IntegerConstant", "1");
    Node v$57 = GNode.create("ExpressionList", v$53, v$54, v$55, v$56);
    Node v$58 = GNode.create("FunctionCall", v$52, v$57);
    Node v$59 = GNode.create("ExpressionStatement", v$58);
    Node v$60 = GNode.create("CompoundStatement", v$13, v$26, v$35, v$49, 
      v$59, abruptFlowJump, null);
    return v$60;
  }

  /**
   * Create a compound statement.
   *
   * @param abrupt The abrupt.
   * @param abruptFlowJump The abruptFlowJump.
   * @return The generic node.
   */
  public Node returnVoid(Node abrupt, Node abruptFlowJump) {
    Node v$1 = GNode.create("TypedefName", "jclass");
    Node v$2 = GNode.create("DeclarationSpecifiers", v$1);
    Node v$3 = GNode.create("SimpleDeclarator", "cls");
    Node v$4 = GNode.create("PrimaryIdentifier", "env");
    Node v$5 = GNode.create("IndirectionExpression", v$4);
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, 
      "GetObjectClass");
    Node v$7 = GNode.create("PrimaryIdentifier", "env");
    Node v$8 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$9 = GNode.create("ExpressionList", v$7, v$8);
    Node v$10 = GNode.create("FunctionCall", v$6, v$9);
    Node v$11 = GNode.create("InitializedDeclarator", null, v$3, null, null, 
      v$10);
    Node v$12 = GNode.create("InitializedDeclaratorList", v$11);
    Node v$13 = GNode.create("Declaration", null, v$2, v$12);
    Node v$14 = GNode.create("TypedefName", "jfieldID");
    Node v$15 = GNode.create("DeclarationSpecifiers", v$14);
    Node v$16 = GNode.create("SimpleDeclarator", "fidAbrupt");
    Node v$17 = GNode.create("PrimaryIdentifier", "env");
    Node v$18 = GNode.create("IndirectionExpression", v$17);
    Node v$19 = GNode.create("IndirectComponentSelection", v$18, 
      "GetFieldID");
    Node v$20 = GNode.create("PrimaryIdentifier", "env");
    Node v$21 = GNode.create("PrimaryIdentifier", "cls");
    Node v$22 = GNode.create("StringConstant", "\"Z\"");
    Node v$23 = GNode.create("ExpressionList", v$20, v$21, abrupt, v$22);
    Node v$24 = GNode.create("FunctionCall", v$19, v$23);
    Node v$25 = GNode.create("InitializedDeclarator", null, v$16, null, null, 
      v$24);
    Node v$26 = GNode.create("InitializedDeclaratorList", v$25);
    Node v$27 = GNode.create("Declaration", null, v$15, v$26);
    Node v$28 = GNode.create("PrimaryIdentifier", "env");
    Node v$29 = GNode.create("IndirectionExpression", v$28);
    Node v$30 = GNode.create("IndirectComponentSelection", v$29, 
      "SetBooleanField");
    Node v$31 = GNode.create("PrimaryIdentifier", "env");
    Node v$32 = GNode.create("PrimaryIdentifier", "jEnv");
    Node v$33 = GNode.create("PrimaryIdentifier", "fidAbrupt");
    Node v$34 = GNode.create("IntegerConstant", "1");
    Node v$35 = GNode.create("ExpressionList", v$31, v$32, v$33, v$34);
    Node v$36 = GNode.create("FunctionCall", v$30, v$35);
    Node v$37 = GNode.create("ExpressionStatement", v$36);
    Node v$38 = GNode.create("CompoundStatement", v$13, v$27, v$37, 
      abruptFlowJump, null);
    return v$38;
  }

  /**
   * Create a compound statement.
   *
   * @param jaField The jaField.
   * @param init The init.
   * @param releaseAbrupt The releaseAbrupt.
   * @param caDecl The caDecl.
   * @param caField The caField.
   * @param getRegion The getRegion.
   * @param body The body.
   * @param label The label.
   * @param setRegion The setRegion.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node withPrimitiveArray(String jaField, Node init, 
                                 String releaseAbrupt, Node caDecl, 
                                 String caField, String getRegion, Node body, 
                                 String label, String setRegion, 
                                 Node abruptFlowCheck) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, jaField);
    Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
    Node v$4 = GNode.create("ExpressionStatement", v$3);
    Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, releaseAbrupt);
    Node v$7 = GNode.create("IntegerConstant", "0");
    Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
    Node v$9 = GNode.create("ExpressionStatement", v$8);
    Node v$10 = GNode.create("TypedefName", "jint");
    Node v$11 = GNode.create("DeclarationSpecifiers", v$10);
    Node v$12 = GNode.create("SimpleDeclarator", "length");
    Node v$13 = GNode.create("PrimaryIdentifier", "env");
    Node v$14 = GNode.create("IndirectionExpression", v$13);
    Node v$15 = GNode.create("IndirectComponentSelection", v$14, 
      "GetArrayLength");
    Node v$16 = GNode.create("PrimaryIdentifier", "env");
    Node v$17 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$18 = GNode.create("IndirectComponentSelection", v$17, jaField);
    Node v$19 = GNode.create("ExpressionList", v$16, v$18);
    Node v$20 = GNode.create("FunctionCall", v$15, v$19);
    Node v$21 = GNode.create("InitializedDeclarator", null, v$12, null, null, 
      v$20);
    Node v$22 = GNode.create("InitializedDeclaratorList", v$21);
    Node v$23 = GNode.create("Declaration", null, v$11, v$22);
    Node v$24 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$25 = GNode.create("IndirectComponentSelection", v$24, caField);
    Node v$26 = GNode.create("PrimaryIdentifier", "ca");
    Node v$27 = GNode.create("AssignmentExpression", v$25, "=", v$26);
    Node v$28 = GNode.create("ExpressionStatement", v$27);
    Node v$29 = GNode.create("PrimaryIdentifier", "env");
    Node v$30 = GNode.create("IndirectionExpression", v$29);
    Node v$31 = GNode.create("IndirectComponentSelection", v$30, getRegion);
    Node v$32 = GNode.create("PrimaryIdentifier", "env");
    Node v$33 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$34 = GNode.create("IndirectComponentSelection", v$33, jaField);
    Node v$35 = GNode.create("IntegerConstant", "0");
    Node v$36 = GNode.create("PrimaryIdentifier", "length");
    Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$38 = GNode.create("IndirectComponentSelection", v$37, caField);
    Node v$39 = GNode.create("ExpressionList", v$32, v$34, v$35, v$36, v$38);
    Node v$40 = GNode.create("FunctionCall", v$31, v$39);
    Node v$41 = GNode.create("ExpressionStatement", v$40);
    Node v$42 = GNode.create("PrimaryIdentifier", label);
    Node v$43 = GNode.create("GotoStatement", null, v$42);
    Node v$44 = GNode.create("NamedLabel", label, null);
    Node v$45 = GNode.create("IntegerConstant", "2");
    Node v$46 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$47 = GNode.create("IndirectComponentSelection", v$46, 
      releaseAbrupt);
    Node v$48 = GNode.create("EqualityExpression", v$45, "!=", v$47);
    Node v$49 = GNode.create("PrimaryIdentifier", "env");
    Node v$50 = GNode.create("IndirectionExpression", v$49);
    Node v$51 = GNode.create("IndirectComponentSelection", v$50, setRegion);
    Node v$52 = GNode.create("PrimaryIdentifier", "env");
    Node v$53 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$54 = GNode.create("IndirectComponentSelection", v$53, jaField);
    Node v$55 = GNode.create("IntegerConstant", "0");
    Node v$56 = GNode.create("PrimaryIdentifier", "length");
    Node v$57 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$58 = GNode.create("IndirectComponentSelection", v$57, caField);
    Node v$59 = GNode.create("ExpressionList", v$52, v$54, v$55, v$56, v$58);
    Node v$60 = GNode.create("FunctionCall", v$51, v$59);
    Node v$61 = GNode.create("ExpressionStatement", v$60);
    Node v$62 = GNode.create("IfStatement", v$48, v$61);
    Node v$63 = GNode.create("LabeledStatement", v$44, v$62);
    Node v$64 = GNode.create("CompoundStatement", v$23, caDecl, v$28, v$41, 
      body, v$43, v$63, null);
    Node v$65 = GNode.create("CompoundStatement", v$4, v$9, v$64, 
      abruptFlowCheck, null);
    return v$65;
  }

  /**
   * Create a compound statement.
   *
   * @param jaField The jaField.
   * @param init The init.
   * @param releaseAbrupt The releaseAbrupt.
   * @param caField The caField.
   * @param body The body.
   * @param label The label.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node withReferenceArray(String jaField, Node init, 
                                 String releaseAbrupt, String caField, 
                                 Node body, String label, Node abruptFlowCheck) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, jaField);
    Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
    Node v$4 = GNode.create("ExpressionStatement", v$3);
    Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, releaseAbrupt);
    Node v$7 = GNode.create("IntegerConstant", "0");
    Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
    Node v$9 = GNode.create("ExpressionStatement", v$8);
    Node v$10 = GNode.create("TypedefName", "jsize");
    Node v$11 = GNode.create("DeclarationSpecifiers", v$10);
    Node v$12 = GNode.create("SimpleDeclarator", "i");
    Node v$13 = GNode.create("InitializedDeclarator", null, v$12, null, null, 
      null);
    Node v$14 = GNode.create("InitializedDeclaratorList", v$13);
    Node v$15 = GNode.create("Declaration", null, v$11, v$14);
    Node v$16 = GNode.create("TypedefName", "jint");
    Node v$17 = GNode.create("DeclarationSpecifiers", v$16);
    Node v$18 = GNode.create("SimpleDeclarator", "length");
    Node v$19 = GNode.create("PrimaryIdentifier", "env");
    Node v$20 = GNode.create("IndirectionExpression", v$19);
    Node v$21 = GNode.create("IndirectComponentSelection", v$20, 
      "GetArrayLength");
    Node v$22 = GNode.create("PrimaryIdentifier", "env");
    Node v$23 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$24 = GNode.create("IndirectComponentSelection", v$23, jaField);
    Node v$25 = GNode.create("ExpressionList", v$22, v$24);
    Node v$26 = GNode.create("FunctionCall", v$21, v$25);
    Node v$27 = GNode.create("InitializedDeclarator", null, v$18, null, null, 
      v$26);
    Node v$28 = GNode.create("InitializedDeclaratorList", v$27);
    Node v$29 = GNode.create("Declaration", null, v$17, v$28);
    Node v$30 = GNode.create("TypedefName", "jobject");
    Node v$31 = GNode.create("DeclarationSpecifiers", v$30);
    Node v$32 = GNode.create("SimpleDeclarator", "ca");
    Node v$33 = GNode.create("ArrayQualifierList", false);
    Node v$34 = GNode.create("PrimaryIdentifier", "length");
    Node v$35 = GNode.create("ArrayDeclarator", v$32, v$33, v$34);
    Node v$36 = GNode.create("InitializedDeclarator", null, v$35, null, null, 
      null);
    Node v$37 = GNode.create("InitializedDeclaratorList", v$36);
    Node v$38 = GNode.create("Declaration", null, v$31, v$37);
    Node v$39 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$40 = GNode.create("IndirectComponentSelection", v$39, caField);
    Node v$41 = GNode.create("PrimaryIdentifier", "ca");
    Node v$42 = GNode.create("AssignmentExpression", v$40, "=", v$41);
    Node v$43 = GNode.create("ExpressionStatement", v$42);
    Node v$44 = GNode.create("PrimaryIdentifier", "i");
    Node v$45 = GNode.create("IntegerConstant", "0");
    Node v$46 = GNode.create("AssignmentExpression", v$44, "=", v$45);
    Node v$47 = GNode.create("PrimaryIdentifier", "i");
    Node v$48 = GNode.create("PrimaryIdentifier", "length");
    Node v$49 = GNode.create("RelationalExpression", v$47, "<", v$48);
    Node v$50 = GNode.create("PrimaryIdentifier", "i");
    Node v$51 = GNode.create("PostincrementExpression", v$50);
    Node v$52 = GNode.create("PrimaryIdentifier", "ca");
    Node v$53 = GNode.create("PrimaryIdentifier", "i");
    Node v$54 = GNode.create("SubscriptExpression", v$52, v$53);
    Node v$55 = GNode.create("PrimaryIdentifier", "env");
    Node v$56 = GNode.create("IndirectionExpression", v$55);
    Node v$57 = GNode.create("IndirectComponentSelection", v$56, 
      "GetObjectArrayElement");
    Node v$58 = GNode.create("PrimaryIdentifier", "env");
    Node v$59 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$60 = GNode.create("IndirectComponentSelection", v$59, jaField);
    Node v$61 = GNode.create("PrimaryIdentifier", "i");
    Node v$62 = GNode.create("ExpressionList", v$58, v$60, v$61);
    Node v$63 = GNode.create("FunctionCall", v$57, v$62);
    Node v$64 = GNode.create("AssignmentExpression", v$54, "=", v$63);
    Node v$65 = GNode.create("ExpressionStatement", v$64);
    Node v$66 = GNode.create("ForStatement", v$46, v$49, v$51, v$65);
    Node v$67 = GNode.create("PrimaryIdentifier", label);
    Node v$68 = GNode.create("GotoStatement", null, v$67);
    Node v$69 = GNode.create("NamedLabel", label, null);
    Node v$70 = GNode.create("IntegerConstant", "2");
    Node v$71 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$72 = GNode.create("IndirectComponentSelection", v$71, 
      releaseAbrupt);
    Node v$73 = GNode.create("EqualityExpression", v$70, "!=", v$72);
    Node v$74 = GNode.create("PrimaryIdentifier", "i");
    Node v$75 = GNode.create("IntegerConstant", "0");
    Node v$76 = GNode.create("AssignmentExpression", v$74, "=", v$75);
    Node v$77 = GNode.create("PrimaryIdentifier", "i");
    Node v$78 = GNode.create("PrimaryIdentifier", "length");
    Node v$79 = GNode.create("RelationalExpression", v$77, "<", v$78);
    Node v$80 = GNode.create("PrimaryIdentifier", "i");
    Node v$81 = GNode.create("PostincrementExpression", v$80);
    Node v$82 = GNode.create("PrimaryIdentifier", "env");
    Node v$83 = GNode.create("IndirectionExpression", v$82);
    Node v$84 = GNode.create("IndirectComponentSelection", v$83, 
      "SetObjectArrayElement");
    Node v$85 = GNode.create("PrimaryIdentifier", "env");
    Node v$86 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$87 = GNode.create("IndirectComponentSelection", v$86, jaField);
    Node v$88 = GNode.create("PrimaryIdentifier", "i");
    Node v$89 = GNode.create("PrimaryIdentifier", "ca");
    Node v$90 = GNode.create("PrimaryIdentifier", "i");
    Node v$91 = GNode.create("SubscriptExpression", v$89, v$90);
    Node v$92 = GNode.create("ExpressionList", v$85, v$87, v$88, v$91);
    Node v$93 = GNode.create("FunctionCall", v$84, v$92);
    Node v$94 = GNode.create("ExpressionStatement", v$93);
    Node v$95 = GNode.create("PrimaryIdentifier", "env");
    Node v$96 = GNode.create("IndirectionExpression", v$95);
    Node v$97 = GNode.create("IndirectComponentSelection", v$96, 
      "ExceptionCheck");
    Node v$98 = GNode.create("PrimaryIdentifier", "env");
    Node v$99 = GNode.create("ExpressionList", v$98);
    Node v$100 = GNode.create("FunctionCall", v$97, v$99);
    Node v$101 = GNode.create("BreakStatement", false);
    Node v$102 = GNode.create("IfStatement", v$100, v$101);
    Node v$103 = GNode.create("CompoundStatement", v$94, v$102, null);
    Node v$104 = GNode.create("ForStatement", v$76, v$79, v$81, v$103);
    Node v$105 = GNode.create("IfStatement", v$73, v$104);
    Node v$106 = GNode.create("LabeledStatement", v$69, v$105);
    Node v$107 = GNode.create("CompoundStatement", 9).
      add(v$15).add(v$29).add(v$38).add(v$43).add(v$66).add(body).add(v$68).
      add(v$106).add(null);
    Node v$108 = GNode.create("CompoundStatement", v$4, v$9, v$107, 
      abruptFlowCheck, null);
    return v$108;
  }

  /**
   * Create a compound statement.
   *
   * @param jsField The jsField.
   * @param init The init.
   * @param releaseAbrupt The releaseAbrupt.
   * @param csField The csField.
   * @param body The body.
   * @param label The label.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node withString(String jsField, Node init, String releaseAbrupt, 
                         String csField, Node body, String label, 
                         Node abruptFlowCheck) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, jsField);
    Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
    Node v$4 = GNode.create("ExpressionStatement", v$3);
    Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, releaseAbrupt);
    Node v$7 = GNode.create("IntegerConstant", "0");
    Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
    Node v$9 = GNode.create("ExpressionStatement", v$8);
    Node v$10 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$11 = GNode.create("IndirectComponentSelection", v$10, csField);
    Node v$12 = GNode.create("TypedefName", "jchar");
    Node v$13 = GNode.create("SpecifierQualifierList", v$12);
    Node v$14 = GNode.create("TypeQualifierList", false);
    Node v$15 = GNode.create("Pointer", v$14, null);
    Node v$16 = GNode.create("AbstractDeclarator", v$15, null);
    Node v$17 = GNode.create("TypeName", v$13, v$16);
    Node v$18 = GNode.create("PrimaryIdentifier", "env");
    Node v$19 = GNode.create("IndirectionExpression", v$18);
    Node v$20 = GNode.create("IndirectComponentSelection", v$19, 
      "GetStringChars");
    Node v$21 = GNode.create("PrimaryIdentifier", "env");
    Node v$22 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$23 = GNode.create("IndirectComponentSelection", v$22, jsField);
    Node v$24 = GNode.create("IntegerConstant", "0");
    Node v$25 = GNode.create("ExpressionList", v$21, v$23, v$24);
    Node v$26 = GNode.create("FunctionCall", v$20, v$25);
    Node v$27 = GNode.create("CastExpression", v$17, v$26);
    Node v$28 = GNode.create("AssignmentExpression", v$11, "=", v$27);
    Node v$29 = GNode.create("ExpressionStatement", v$28);
    Node v$30 = GNode.create("PrimaryIdentifier", label);
    Node v$31 = GNode.create("GotoStatement", null, v$30);
    Node v$32 = GNode.create("NamedLabel", label, null);
    Node v$33 = GNode.create("PrimaryIdentifier", "env");
    Node v$34 = GNode.create("IndirectionExpression", v$33);
    Node v$35 = GNode.create("IndirectComponentSelection", v$34, 
      "ReleaseStringChars");
    Node v$36 = GNode.create("PrimaryIdentifier", "env");
    Node v$37 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$38 = GNode.create("IndirectComponentSelection", v$37, jsField);
    Node v$39 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$40 = GNode.create("IndirectComponentSelection", v$39, csField);
    Node v$41 = GNode.create("ExpressionList", v$36, v$38, v$40);
    Node v$42 = GNode.create("FunctionCall", v$35, v$41);
    Node v$43 = GNode.create("ExpressionStatement", v$42);
    Node v$44 = GNode.create("LabeledStatement", v$32, v$43);
    Node v$45 = GNode.create("CompoundStatement", v$4, v$9, v$29, body, v$31, 
      v$44, abruptFlowCheck, null);
    return v$45;
  }

  /**
   * Create a compound statement.
   *
   * @param jsField The jsField.
   * @param init The init.
   * @param releaseAbrupt The releaseAbrupt.
   * @param csField The csField.
   * @param body The body.
   * @param label The label.
   * @param abruptFlowCheck The abruptFlowCheck.
   * @return The generic node.
   */
  public Node withStringUTF(String jsField, Node init, String releaseAbrupt, 
                            String csField, Node body, String label, 
                            Node abruptFlowCheck) {
    Node v$1 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$2 = GNode.create("IndirectComponentSelection", v$1, jsField);
    Node v$3 = GNode.create("AssignmentExpression", v$2, "=", init);
    Node v$4 = GNode.create("ExpressionStatement", v$3);
    Node v$5 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$6 = GNode.create("IndirectComponentSelection", v$5, releaseAbrupt);
    Node v$7 = GNode.create("IntegerConstant", "0");
    Node v$8 = GNode.create("AssignmentExpression", v$6, "=", v$7);
    Node v$9 = GNode.create("ExpressionStatement", v$8);
    Node v$10 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$11 = GNode.create("IndirectComponentSelection", v$10, csField);
    Node v$12 = GNode.create("TypedefName", "jbyte");
    Node v$13 = GNode.create("SpecifierQualifierList", v$12);
    Node v$14 = GNode.create("TypeQualifierList", false);
    Node v$15 = GNode.create("Pointer", v$14, null);
    Node v$16 = GNode.create("AbstractDeclarator", v$15, null);
    Node v$17 = GNode.create("TypeName", v$13, v$16);
    Node v$18 = GNode.create("PrimaryIdentifier", "env");
    Node v$19 = GNode.create("IndirectionExpression", v$18);
    Node v$20 = GNode.create("IndirectComponentSelection", v$19, 
      "GetStringUTFChars");
    Node v$21 = GNode.create("PrimaryIdentifier", "env");
    Node v$22 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$23 = GNode.create("IndirectComponentSelection", v$22, jsField);
    Node v$24 = GNode.create("IntegerConstant", "0");
    Node v$25 = GNode.create("ExpressionList", v$21, v$23, v$24);
    Node v$26 = GNode.create("FunctionCall", v$20, v$25);
    Node v$27 = GNode.create("CastExpression", v$17, v$26);
    Node v$28 = GNode.create("AssignmentExpression", v$11, "=", v$27);
    Node v$29 = GNode.create("ExpressionStatement", v$28);
    Node v$30 = GNode.create("NamedLabel", label, null);
    Node v$31 = GNode.create("PrimaryIdentifier", "env");
    Node v$32 = GNode.create("IndirectionExpression", v$31);
    Node v$33 = GNode.create("IndirectComponentSelection", v$32, 
      "ReleaseStringUTFChars");
    Node v$34 = GNode.create("PrimaryIdentifier", "env");
    Node v$35 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$36 = GNode.create("IndirectComponentSelection", v$35, jsField);
    Node v$37 = GNode.create("Char", false);
    Node v$38 = GNode.create("SpecifierQualifierList", v$37);
    Node v$39 = GNode.create("TypeQualifierList", false);
    Node v$40 = GNode.create("Pointer", v$39, null);
    Node v$41 = GNode.create("AbstractDeclarator", v$40, null);
    Node v$42 = GNode.create("TypeName", v$38, v$41);
    Node v$43 = GNode.create("PrimaryIdentifier", "pcEnv");
    Node v$44 = GNode.create("IndirectComponentSelection", v$43, csField);
    Node v$45 = GNode.create("CastExpression", v$42, v$44);
    Node v$46 = GNode.create("ExpressionList", v$34, v$36, v$45);
    Node v$47 = GNode.create("FunctionCall", v$33, v$46);
    Node v$48 = GNode.create("ExpressionStatement", v$47);
    Node v$49 = GNode.create("LabeledStatement", v$30, v$48);
    Node v$50 = GNode.create("CompoundStatement", v$4, v$9, v$29, body, v$49, 
      abruptFlowCheck, null);
    return v$50;
  }

}
