public static Cons walkClSpecialTree(Cons tree, Object [] MV_returnarray) {
    { Cons bindings = ((Cons)(tree.rest.value));
      Cons body = tree.rest.rest;
      Symbol variablename = null;
      StandardObject variabletype = null;
      boolean bindviasetqP = false;
      Cons bindviasetqtrees = Stella.NIL;
      Stella_Object otree = null;

      { Cons binding = null;
        Cons iter000 = bindings;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          binding = ((Cons)(iter000.value));
          variablename = ((Symbol)(binding.value));
          variabletype = Symbol.lookupGlobalVariableType(variablename);
          if (bindviasetqP) {
            bindviasetqtrees = Cons.cons(Stella_Object.walkATree(Cons.list$(Cons.cons(Stella.SYM_STELLA_SETQ, Cons.cons(variablename, Cons.cons(Cons.cons(binding.rest.value, Stella.NIL), Stella.NIL)))), new Object[1]), bindviasetqtrees);
            binding.secondSetter(variabletype);
            binding.rest.rest = Cons.cons(Stella.SYM_STELLA_NULL, Stella.NIL);
          }
          else {
            otree = Stella_Object.walkExpressionTree(binding.rest.value, variabletype, Stella.SYM_STELLA_SPECIAL, true, new Object[1]);
            if (Stella_Object.proceduralExpressionP(otree)) {
              bindviasetqP = true;
              bindviasetqtrees = Cons.cons(Stella_Object.walkATree(Cons.list$(Cons.cons(Stella.SYM_STELLA_SETQ, Cons.cons(variablename, Cons.cons(Cons.cons(otree, Stella.NIL), Stella.NIL)))), new Object[1]), bindviasetqtrees);
              otree = Stella.SYM_STELLA_NULL;
            }
            binding.secondSetter(variabletype);
            binding.rest.rest = Cons.cons(otree, Stella.NIL);
          }
        }
      }
      tree.firstSetter(Stella.SYM_STELLA_SPECIAL);
      tree.rest.rest = bindviasetqtrees.reverse().concatenate(Cons.walkListOfStatements(body), Stella.NIL);
      return (Stella_Object.sysTree(tree, Stella.SGT_STELLA_VOID, MV_returnarray));
    }
  }