public T elementAt(int index) throws Exception
	{
		if(this._source instanceof List<?>)
		{
			return ((List<T>)this._source).get(index);
		}
		else if(this._source instanceof ArrayIterable<?>)
		{
			return ((ArrayIterable<T>)this._source).getSource()[index];
		}
		else
		{
			int i = 0;
			for(T item : this._source)
			{
				if(i == index)
				{
					return item;
				}
				i ++;
			}

			throw new IndexOutOfBoundsException("out of index");
		}
	}