@NotNull
  @Contract(pure = true)
  public <T> T selectNotNull(@NotNull T left, @NotNull T base, @NotNull T right) {
    if (myIndex == 0) return left;
    if (myIndex == 1) return base;
    if (myIndex == 2) return right;
    throw new IllegalStateException();
  }
@NotNull
  @Contract(pure = true)
  public <T> T selectNotNull(@NotNull T left, @NotNull T base, @NotNull T right)