@NotNull
  private static <T> T chooseFirstNotNull(T @NotNull ... values) {
    for (T value : values) {
      if (value != null) {
        return value;
      }
    }
    throw new NullPointerException("At least one of values must be not null");
  }
@NotNull
  private static <T> T chooseFirstNotNull(T @NotNull ... values)