public static void javaOutputStatement(Stella_Object statement) {
    if (Stella_Object.safePrimaryType(statement) == Stella.SGT_STELLA_CONS) {
      { Cons statement000 = ((Cons)(statement));

        if (statement000 == Stella.NIL) {
          return;
        }
        if (Stella_Object.consP(statement000.value) ||
            (statement000.value == null)) {
          {
            Stella_Object.javaOutputStatement(statement000.value);
            Stella_Object.javaOutputStatement(statement000.rest);
          }
        }
        else {
          { GeneralizedSymbol testValue000 = ((GeneralizedSymbol)(statement000.value));

            if (testValue000 == Stella.SYM_STELLA_JAVA_CLASS) {
              Cons.javaOutputClass(statement000.rest, false);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_EXCEPTION_CLASS) {
              Cons.javaOutputClass(statement000.rest, true);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_NAMED_STATEMENT) {
              Cons.javaOutputNamedStatement(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_STATEMENTS) {
              Cons.javaOutputStatements(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_IDENT) {
              StringWrapper.javaOutputIdentifier(((StringWrapper)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_EOL) {
              StringWrapper.javaOutputIdentifier(((StringWrapper)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_LITERAL) {
              statement000.rest.value.javaOutputLiteral();
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_COMMENT) {
              StringWrapper.javaOutputComment(((StringWrapper)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_SYMBOL) {
              statement000.rest.value.javaOutputLiteral();
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_CATCH) {
              Cons.javaOutputCatch(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_THROW) {
              Cons.javaOutputThrow(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_UNWIND_PROTECT) {
              Cons.javaOutputUnwindProtect(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_HANDLER_CASE) {
              Cons.javaOutputHandlerCase(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_SIGNAL) {
              Cons.javaOutputSignal(((Cons)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_VERBATIM) {
              StringWrapper.javaOutputVerbatim(((StringWrapper)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_CAST) {
              Cons.javaOutputCast(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_GLOBAL) {
              Cons.javaOutputGlobalDefinition(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_TYPE) {
              Cons.javaOutputTypeExpression(((Cons)(statement000.rest)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_PROGN) {
              Cons.javaOutputProgn(((Cons)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_BLOCK) {
              Cons.javaOutputBlock(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_WITH_PROCESS_LOCK) {
              Cons.javaOutputWithProcessLock(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_RETURN) {
              Cons.javaOutputReturn(((Cons)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_MAKE) {
              Cons.javaOutputMake(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_FUNCALL) {
              Cons.javaOutputFuncall(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_METHOD_CODE_CALL) {
              Cons.javaOutputMethodCodeCall(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_ASSIGN) {
              Cons.javaOutputAssignment(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_BREAK) {
              Cons.javaOutputBreak(((Cons)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_CONTINUE) {
              Cons.javaOutputContinue(((Cons)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_COND) {
              Cons.javaOutputCond(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_CASE) {
              Cons.javaOutputCase(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_IF) {
              Cons.javaOutputIf(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_WHEN) {
              Cons.javaOutputWhen(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_UNLESS) {
              Cons.javaOutputUnless(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_LOOP) {
              Cons.javaOutputLoop(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_WHILE) {
              Cons.javaOutputWhile(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_FOREACH) {
              Cons.javaOutputForeach(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_SLOT_VALUE) {
              Cons.javaOutputSlotValue(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_SLOT_VALUE_SETTER) {
              Cons.javaOutputSlotValueSetter(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_UNARY_OP) {
              Cons.javaOutputUnaryOperator(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_BINARY_OP) {
              Cons.javaOutputBinaryOperator(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_TERNARY_OP) {
              Cons.javaOutputTernaryOperator(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_FUNCTION_CALL) {
              Cons.javaOutputFunctionCall(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_METHOD_CALL) {
              Cons.javaOutputMethodCall(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_ACTUALS) {
              Cons.javaOutputActualParameters(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_MAKE_ARRAY) {
              Cons.javaOutputMakeArray(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_ARRAY_INITIALIZER) {
              Cons.javaOutputArray(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_ANONYMOUS_ARRAY) {
              Cons.javaOutputAnonymousArray(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_AREF) {
              Cons.javaOutputAref(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_METHOD) {
              Cons.javaOutputMethod(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_FUNCTION) {
              Cons.javaOutputMethod(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_PRINT_STREAM) {
              Cons.javaOutputPrintStream(statement000.rest, false);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_PRINT_NATIVE_STREAM) {
              Cons.javaOutputPrintStream(statement000.rest, true);
            }
            else if (testValue000 == Stella.SYM_STELLA_JAVA_DECLARATIONS) {
              Cons.javaOutputDeclarations(((Cons)(statement000.rest)));
            }
            else {
              { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

                stream000.nativeStream.print("`" + testValue000 + "' is not a valid case option");
                throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
              }
            }
          }
        }
      }
    }
    else {
      if (statement == null) {
        return;
      }
      statement.javaOutputLiteral();
    }
  }