// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/Interactor.java
// public interface Interactor<T extends InteractorResponse> extends Callable<T> {
//   @Override T call() throws Exception;
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/InteractorError.java
// public interface InteractorError {
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/InteractorResponse.java
// public class InteractorResponse<T> {
// 
//   private InteractorError error;
//   private T result;
// 
//   public InteractorResponse(InteractorError error) {
//     this.error = error;
//   }
// 
//   public InteractorResponse(T result) {
//     this.result = result;
//   }
// 
//   public InteractorError getError() {
//     return error;
//   }
// 
//   public T getResult() {
//     return result;
//   }
// 
//   public boolean hasError() {
//     return error != null;
//   }
// }
// 
// Path: presentation/src/main/java/me/panavtec/cleancontacts/presentation/InteractorResult.java
// public interface InteractorResult<T> {
//   void onResult(T result);
// }


import java.util.HashMap;
import java.util.Map;
import me.panavtec.cleancontacts.domain.interactors.Interactor;
import me.panavtec.cleancontacts.domain.interactors.InteractorError;
import me.panavtec.cleancontacts.domain.interactors.InteractorResponse;
import me.panavtec.cleancontacts.presentation.InteractorResult;
package me.panavtec.cleancontacts.presentation.invoker;


public class InteractorExecution<T> {
  private InteractorResult<T> interactorResult;
  private final Map<Class<? extends InteractorError>, InteractorResult<? extends InteractorError>> errors =
      new HashMap<>(0);
  private final Interactor<InteractorResponse<T>> interactor;
  private int priority;

  public InteractorExecution(Interactor<InteractorResponse<T>> interactor) {
    this.interactor = interactor;
  }

// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/Interactor.java
// public interface Interactor<T extends InteractorResponse> extends Callable<T> {
//   @Override T call() throws Exception;
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/InteractorError.java
// public interface InteractorError {
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/InteractorResponse.java
// public class InteractorResponse<T> {
// 
//   private InteractorError error;
//   private T result;
// 
//   public InteractorResponse(InteractorError error) {
//     this.error = error;
//   }
// 
//   public InteractorResponse(T result) {
//     this.result = result;
//   }
// 
//   public InteractorError getError() {
//     return error;
//   }
// 
//   public T getResult() {
//     return result;
//   }
// 
//   public boolean hasError() {
//     return error != null;
//   }
// }
// 
// Path: presentation/src/main/java/me/panavtec/cleancontacts/presentation/InteractorResult.java
// public interface InteractorResult<T> {
//   void onResult(T result);
// }


// Path: presentation/src/main/java/me/panavtec/cleancontacts/presentation/invoker/InteractorExecution.java
import java.util.HashMap;
import java.util.Map;
import me.panavtec.cleancontacts.domain.interactors.Interactor;
import me.panavtec.cleancontacts.domain.interactors.InteractorError;
import me.panavtec.cleancontacts.domain.interactors.InteractorResponse;
import me.panavtec.cleancontacts.presentation.InteractorResult;

package me.panavtec.cleancontacts.presentation.invoker;


public class InteractorExecution<T> {
  private InteractorResult<T> interactorResult;
  private final Map<Class<? extends InteractorError>, InteractorResult<? extends InteractorError>> errors =
      new HashMap<>(0);
  private final Interactor<InteractorResponse<T>> interactor;
  private int priority;

  public InteractorExecution(Interactor<InteractorResponse<T>> interactor) {
    this.interactor = interactor;
  }

  public InteractorExecution<T> result(InteractorResult<T> interactorResult) {