public final @Nullable E get(int index) {
    if (this == EMPTY) return null;
    E single = asElement();
    if (single != null) return index == 0 ? single : null;
    List<E> list = asRandomAccess();
    if (list != null) {
      return index >= list.size() ? null : list.get(index);
    }
    return skip(index).first();
  }
public final @Nullable E get(int index)