class Result {

  @NonNull
  public static <T> Result<T> success(@NonNull final T value) {
    return new Result<>(checkNotNull(value), null);
  }

    Result(@Nullable final T value, @Nullable final Throwable failure);

}