public static Cons walkPrefixCollectIntoTree(Cons collectintotree, Cons iterators, Cons docode, Object [] MV_returnarray) {
    { Stella_Object collecttree = collectintotree.rest.value;
      Stella_Object intotree = collectintotree.rest.rest.value;
      Symbol collectvariable = Stella.localGensym("COLLECT");
      Cons collectintobindings = Cons.cons(Cons.cons(collectvariable, Cons.list$(Cons.cons(Stella.SGT_STELLA_CONS, Cons.cons(Stella.SYM_STELLA_NULL, Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL);
      Cons collectcode = null;
      Symbol intovariable = null;
      StandardObject intovariabletype = null;

      if (Stella_Object.symbolP(intotree)) {
        {
          intovariable = ((Symbol)(intotree));
          collectcode = Symbol.yieldCollectCode(collectvariable, intovariable, collecttree);
        }
      }
      else {
        {
          { Cons d = null;
            Cons iter000 = iterators;

            for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
              d = ((Cons)(iter000.value));
              Symbol.pushVariableBinding(((Symbol)(d.value)), ((StandardObject)(d.rest.value)));
            }
          }
          { Object [] caller_MV_returnarray = new Object[1];

            intotree = Stella_Object.walkExpressionTree(intotree, null, Stella.SYM_STELLA_FOREACH, false, caller_MV_returnarray);
            intovariabletype = ((StandardObject)(caller_MV_returnarray[0]));
          }
          { Cons d = null;
            Cons iter001 = iterators;

            for (;!(iter001 == Stella.NIL); iter001 = iter001.rest) {
              d = ((Cons)(iter001.value));
              d = d;
              Stella.popVariableBinding();
            }
          }
          intovariable = Stella.localGensym("INTO");
          collectintobindings = Cons.cons(Cons.consList(Cons.cons(intovariable, Cons.cons(intovariabletype, Cons.cons(intotree, Stella.NIL)))), collectintobindings);
          Symbol.pushVariableBinding(intovariable, intovariabletype);
          collectcode = Symbol.yieldCollectCode(collectvariable, intovariable, collecttree);
          Stella.popVariableBinding();
        }
      }
      { Cons _return_temp = iterators.concatenate(collectintobindings, Stella.NIL);

        MV_returnarray[0] = docode.concatenate(collectcode, Stella.NIL);
        return (_return_temp);
      }
    }
  }