/** Returns a flat list of variables held by this LambdaList. */ public Object vars() { if (this.vars != null) return this.vars; Object ret = Symbols.NIL; // whole if (this.whole != null) ret = Lists.nconc(this.whole.vars(), ret); // required for (int i = 0; i < this.required.length; i++) ret = Lists.nconc(this.required[i].vars(), ret); // optional for (int i = 0; i < this.optional.length; i++) ret = Lists.nconc(this.optional[i].vars(), ret); // rest if (this.rest != null) ret = Lists.nconc(this.rest.vars(), ret); // keyword for (int i = 0; i < this.keyword.length; i++) ret = Lists.nconc(this.keyword[i].vars(), ret); // aux for (int i = 0; i < this.aux.length; i++) ret = Lists.nconc(this.aux[i].vars(), ret); this.vars = ret; return ret; }