public final @Unmodifiable @NotNull List<E> toList() {
    if (this == EMPTY) return Collections.emptyList();
    E single = asElement();
    if (single != null) return Collections.singletonList(single);
    List<E> result = ContainerUtil.newArrayList(this);
    return result.isEmpty() ? Collections.emptyList() : Collections.unmodifiableList(result);
  }
public final @Unmodifiable @NotNull List<E> toList()