@Override
	public ParseResult<T, List<A>> parse(LList<T> tokens) {
		List<A> results = new ArrayList<A>();
		LList<T> restTokens = tokens;
		for(Parser<T,A> p : this.parsers) {
			ParseResult<T, A> r = p.parse(restTokens);
			if(r.isSuccess()) {
				restTokens = r.getRestTokens();
				results.add(r.getValue());
			} else {
				return ParseResult.failure("'all' failed", restTokens);
			}
		}
		return ParseResult.success(restTokens, results);
	}