public static void idlOutputStatement(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.idlOutputStatement(statement000.value);
            Stella_Object.idlOutputStatement(statement000.rest);
          }
        }
        else {
          { GeneralizedSymbol testValue000 = ((GeneralizedSymbol)(statement000.value));

            if (testValue000 == Stella.SYM_STELLA_IDL_COMMENT) {
              StringWrapper.idlOutputComment(((StringWrapper)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_TYPEDEF) {
              Cons.idlOutputTypedef(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_ENUM) {
              Cons.idlOutputEnum(statement000.rest);
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_INTERFACE) {
              Cons.idlOutputInterface(((Cons)(statement000.rest)));
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_STRUCT) {
              Cons.idlOutputStruct(((Cons)(statement000.rest)));
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_DECLARATIONS) {
              Cons.idlOutputDeclarations(((Cons)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_IDENT) {
              StringWrapper.idlOutputIdentifier(((StringWrapper)(statement000.rest.value)));
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_TYPE) {
              Cons.idlOutputTypeExpression(((Cons)(statement000.rest)));
            }
            else if (testValue000 == Stella.SYM_STELLA_IDL_SIGNATURES) {
              Cons.idlOutputSignatures(((Cons)(statement000.rest.value)));
            }
            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;
      }
      Stella_Object.idlOutputAtomicExpression(statement);
    }
  }