public LispValue elt(LispValue index)
	{
		long indexValue = assertInteger(index).getLongValue();
    
		if (indexValue < 0)
			throw new LispIndexOutOfRangeException(String.valueOf(indexValue) + " to ELT");
//		if ((indexValue < 0) || (indexValue > (this.length() - 1)))
//			throw new LispIndexOutOfRangeException(String.valueOf(indexValue) + " to ELT");

		LispValue element = this;
		for (int i = 0; i < indexValue; ++i) {
			if (element == NIL)
				throw new LispIndexOutOfRangeException(String.valueOf(indexValue) + " to ELT");
			element = cdr(element);
		}
		if (element == NIL)
			throw new LispIndexOutOfRangeException(String.valueOf(indexValue) + " to ELT");
		return car(element);
	}