# File lib/extlib/lazy_array.rb, line 102
  def [](*args)
    index, length = extract_slice_arguments(*args)

    if length == 1 && args.size == 1 && args.first.kind_of?(Integer)
      return at(index)
    end

    if index >= 0 && lazy_possible?(@head, index + length)
      @head[*args]
    elsif index < 0 && lazy_possible?(@tail, index.abs - 1 + length)
      @tail[*args]
    else
      lazy_load
      @array[*args]
    end
  end