@Override
  public <O> O @NotNull [] toArray(O @NotNull [] a) {
    @SuppressWarnings("unchecked")
    O theElement = (O)this.theElement;
    if (theElement == null) {
      //noinspection SuspiciousToArrayCall
      return super.toArray(a);
    }

    if (a.length == 0) {
      a = ArrayUtil.newArray(ArrayUtil.getComponentType(a), 1);
    }
    a[0] = theElement;
    if (a.length > 1) {
      a[1] = null;
    }
    return a;
  }
@Override
  public <O> O @NotNull [] toArray(O @NotNull [] a)