@Nullable
  @Contract(value = "!null, !null, !null -> !null; null, null, null -> null", pure = true)
  public <T> T select(@Nullable T left, @Nullable T base, @Nullable T right) {
    if (myIndex == 0) return left;
    if (myIndex == 1) return base;
    if (myIndex == 2) return right;
    throw new IllegalStateException();
  }
@Nullable
  @Contract(value = "!null, !null, !null -> !null; null, null, null -> null", pure = true)
  public <T> T select(@Nullable T left, @Nullable T base, @Nullable T right)