public static Cons yieldSpecialUnbindTree(int nofbindings) {
    { Cons otree = Stella.NIL;

      if (Stella.specialImplementationStyle() == Stella.KWD_UNWIND_PROTECT) {
        { Symbol variable = null;
          Symbol oldvaluevariable = null;
          KvCons iter000 = ((KeyValueList)(Stella.$SPECIALVARIABLESTACK$.get())).theKvList;

          for (;iter000 != null; iter000 = iter000.rest) {
            variable = ((Symbol)(iter000.key));
            oldvaluevariable = ((Symbol)(iter000.value));
            if ((nofbindings = nofbindings - 1) >= 0) {
              { Cons value000 = null;

                { Cons tree = null;
                  Cons iter001 = otree;

                  loop001 : for (;!(iter001 == Stella.NIL); iter001 = iter001.rest) {
                    tree = ((Cons)(iter001.value));
                    if (tree.rest.value == variable) {
                      value000 = tree;
                      break loop001;
                    }
                  }
                }
                otree = otree.remove(value000);
              }
              otree = Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_SETQ, Cons.cons(variable, Cons.cons(Cons.cons(oldvaluevariable, Stella.NIL), Stella.NIL)))), otree);
            }
          }
        }
        return (((Cons)(Cons.prognify(otree.reverse()))));
      }
      else {
        return (null);
      }
    }
  }