class Result {

  @NonNull
  public static <T> Result<T> failure(@NonNull final Throwable failure) {
    return failure == ABSENT_THROWABLE
        ? Result.<T>absent() : new Result<T>(null, checkNotNull(failure));
  }

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

}