public Tree LA(int offset) {
		if (offset < 1) {
			return null;
		}

		int futureDepth = this.depth;

		Tree token = null;
		for (int i = 1; i <= offset; i++) {
			token = (Tree) this.stream.LT(i);

			if (token.getType() == Token.UP && futureDepth == this.limit) {
				if (DEBUG) {
					System.out.println("LA(" + offset + ") => " + null);
				}
				return null;
			}

			if (token.getType() == Token.DOWN) {
				futureDepth += 1;

			} else if (token.getType() == Token.UP) {
				futureDepth -= 1;
			}
		}

		if (DEBUG) {
			System.out.println("LA(" + offset + ") => " + token);
		}

		return token;
	}