public static Stella_Object yieldArgumentAccessTree(Symbol argumentsvariable, int index, boolean restargumentP) {
    { int limit = 5;
      Stella_Object accesstree = argumentsvariable;

      if (index <= limit) {
        { int i = Stella.NULL_INTEGER;
          int iter000 = 2;
          int upperBound000 = index;
          boolean unboundedP000 = upperBound000 == Stella.NULL_INTEGER;

          for (;unboundedP000 ||
                    (iter000 <= upperBound000); iter000 = iter000 + 1) {
            i = iter000;
            i = i;
            accesstree = Cons.list$(Cons.cons(Stella.SYM_STELLA_REST, Cons.cons(accesstree, Cons.cons(Stella.NIL, Stella.NIL))));
          }
        }
      }
      else {
        accesstree = Cons.list$(Cons.cons(Stella.SYM_STELLA_NTH_REST, Cons.cons(accesstree, Cons.cons(Cons.cons(IntegerWrapper.wrapInteger(index - 1), Stella.NIL), Stella.NIL))));
      }
      if (!restargumentP) {
        if (index <= limit) {
          accesstree = Cons.list$(Cons.cons(Stella.SYM_STELLA_VALUE, Cons.cons(accesstree, Cons.cons(Stella.NIL, Stella.NIL))));
        }
        else {
          ((Cons)(accesstree)).value = Stella.SYM_STELLA_NTH;
        }
      }
      return (accesstree);
    }
  }