// Path: agera/src/main/java/com/google/android/agera/Result.java
// @NonNull
// public static <T> Result<T> failure(@NonNull final Throwable failure) {
//   return failure == ABSENT_THROWABLE
//       ? Result.<T>absent() : new Result<T>(null, checkNotNull(failure));
// }


import static com.google.android.agera.Preconditions.checkNotNull;
import static com.google.android.agera.Result.failure;
import android.support.annotation.NonNull;
    @NonNull
    private final TTo staticValue;

    StaticProducer(@NonNull final TTo staticValue) {
      this.staticValue = checkNotNull(staticValue);
    }

    @NonNull
    @Override
    public TTo apply(@NonNull final TFirst input) {
      return staticValue;
    }

    @NonNull
    @Override
    public TTo merge(@NonNull final TFirst o, @NonNull final TSecond o2) {
      return staticValue;
    }

    @NonNull
    @Override
    public TTo get() {
      return staticValue;
    }
  }

  private static final class FailedResult<T> implements Function<Throwable, Result<T>> {
    @NonNull
    @Override
    public Result<T> apply(@NonNull final Throwable input) {
// Path: agera/src/main/java/com/google/android/agera/Result.java
// @NonNull
// public static <T> Result<T> failure(@NonNull final Throwable failure) {
//   return failure == ABSENT_THROWABLE
//       ? Result.<T>absent() : new Result<T>(null, checkNotNull(failure));
// }


// Path: agera/src/main/java/com/google/android/agera/Common.java
import static com.google.android.agera.Preconditions.checkNotNull;
import static com.google.android.agera.Result.failure;
import android.support.annotation.NonNull;

    @NonNull
    private final TTo staticValue;

    StaticProducer(@NonNull final TTo staticValue) {
      this.staticValue = checkNotNull(staticValue);
    }

    @NonNull
    @Override
    public TTo apply(@NonNull final TFirst input) {
      return staticValue;
    }

    @NonNull
    @Override
    public TTo merge(@NonNull final TFirst o, @NonNull final TSecond o2) {
      return staticValue;
    }

    @NonNull
    @Override
    public TTo get() {
      return staticValue;
    }
  }

  private static final class FailedResult<T> implements Function<Throwable, Result<T>> {
    @NonNull
    @Override
    public Result<T> apply(@NonNull final Throwable input) {
      return failure(input);