public static Cons yieldPrintTree(Cons tree) {
    { Stella_Object stream = tree.rest.value;
      Cons arguments = tree.rest.rest;
      Surrogate argumenttype = null;
      Symbol printoperator = null;
      String compoundedstring = null;
      Cons printforms = Stella.NIL;

      stream = Stella_Object.clTranslateATree(stream);
      { Stella_Object arg = null;
        Cons iter000 = arguments;

        loop000 : for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          arg = iter000.value;
          if (arg == Stella.EOL) {
            printforms = Cons.cons(arg, printforms);
            compoundedstring = null;
          }
          else {
            argumenttype = StandardObject.typeSpecToBaseType(Stella_Object.walkedExpressionType(arg));
            if (argumenttype == Stella.SGT_STELLA_STRING) {
              printoperator = Stella.internCommonLispSymbol("WRITE-STRING");
            }
            else {
              if (Surrogate.subtypeOfP(argumenttype, Stella.SGT_STELLA_OBJECT)) {
                printoperator = Stella.SYM_STELLA_PRINT_OBJECT;
              }
              else {
                printoperator = Stella.internCommonLispSymbol("PRINC");
              }
            }
            if (Surrogate.subtypeOfStringP(Stella_Object.safePrimaryType(arg))) {
              { StringWrapper arg000 = ((StringWrapper)(arg));

                if (compoundedstring != null) {
                  compoundedstring = compoundedstring + arg000.wrapperValue;
                  printforms.firstSetter(StringWrapper.wrapString(compoundedstring));
                  continue loop000;
                }
                compoundedstring = arg000.wrapperValue;
              }
            }
            else {
              compoundedstring = null;
            }
            if (Symbol.methodCallTypeForVectorStructs(printoperator, argumenttype, !(printoperator == Stella.SYM_STELLA_PRINT_OBJECT)) == Stella.SYM_STELLA_PRINT_OBJECT) {
              printforms = Cons.cons(Stella_Object.clTranslateATree(arg), printforms);
            }
            else {
              printforms = Cons.cons(Stella_Object.clTranslateATree(arg), printforms);
            }
          }
        }
      }
      printforms = printforms.reverse();
      return (Cons.cons(Symbol.clTranslateGlobalSymbol(Stella.SYM_STELLA_rrPRINT_STREAM), Cons.cons(stream, printforms.concatenate(Stella.NIL, Stella.NIL))));
    }
  }