// Path: privvy/src/main/java/com/metova/privvy/PrivvyInteractor.java
// public abstract class PrivvyInteractor extends CompositeDisposer implements PrivvyContract.Interactor {
// 
//     @Override
//     public void dispose() {
//         clearDisposables();
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/db/FakeDb.java
// @Singleton
// public class FakeDb {
// 
//     private PublishRelay<Number> numberRelay = PublishRelay.create();
// 
//     private Number number = new Number();
// 
//     @Inject
//     public FakeDb() {
//     }
// 
//     public Flowable<Number> getNumber() {
//         return Flowable.just(number);
//     }
// 
//     public void updateNumberBy(int value) {
//         number.value += value;
//         numberRelay.accept(this.number);
//     }
// 
//     public Flowable<Number> numberUpdates() {
//         return numberRelay.toFlowable(BackpressureStrategy.BUFFER);
//     }
// 
//     public Flowable<List<DescriptiveNumber>> getNumberList() {
//         List<DescriptiveNumber> list = new ArrayList<>();
// 
//         for (int i = 0; i < 10; i++) {
//             DescriptiveNumber num = new DescriptiveNumber();
//             num.description = "Number: ";
//             num.value = i;
//             list.add(num);
//         }
//         return Flowable.just(list);
//     }
// 
//     public void setNumberValue(int value) {
//         number.value = value;
//     }
// 
//     public Flowable<DescriptiveNumber> updateListItem(int position) {
//         //fake database interaction that flags the model somehow
//         DescriptiveNumber num = new DescriptiveNumber();
//         num.value = position;
//         num.description = "Magic Number: ";
// 
//         return Flowable.just(num);
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/models/DescriptiveNumber.java
// public class DescriptiveNumber {
// 
//     public int value;
//     public String description;
// 
//     public DescriptiveNumber() {
// 
//     }
// }


import com.metova.privvy.PrivvyInteractor;
import com.metova.privvy.sample.db.FakeDb;
import com.metova.privvy.sample.models.DescriptiveNumber;
import java.util.List;
import io.reactivex.Flowable;
package com.metova.privvy.sample.ui.list;




class ListInteractor extends PrivvyInteractor implements ListContract.Interactor {

    private FakeDb fakeDb;
    private ListContract.Router router;

    ListInteractor(FakeDb fakeDb, ListContract.Router router) {
        this.fakeDb = fakeDb;
        this.router = router;
    }

    @Override
// Path: privvy/src/main/java/com/metova/privvy/PrivvyInteractor.java
// public abstract class PrivvyInteractor extends CompositeDisposer implements PrivvyContract.Interactor {
// 
//     @Override
//     public void dispose() {
//         clearDisposables();
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/db/FakeDb.java
// @Singleton
// public class FakeDb {
// 
//     private PublishRelay<Number> numberRelay = PublishRelay.create();
// 
//     private Number number = new Number();
// 
//     @Inject
//     public FakeDb() {
//     }
// 
//     public Flowable<Number> getNumber() {
//         return Flowable.just(number);
//     }
// 
//     public void updateNumberBy(int value) {
//         number.value += value;
//         numberRelay.accept(this.number);
//     }
// 
//     public Flowable<Number> numberUpdates() {
//         return numberRelay.toFlowable(BackpressureStrategy.BUFFER);
//     }
// 
//     public Flowable<List<DescriptiveNumber>> getNumberList() {
//         List<DescriptiveNumber> list = new ArrayList<>();
// 
//         for (int i = 0; i < 10; i++) {
//             DescriptiveNumber num = new DescriptiveNumber();
//             num.description = "Number: ";
//             num.value = i;
//             list.add(num);
//         }
//         return Flowable.just(list);
//     }
// 
//     public void setNumberValue(int value) {
//         number.value = value;
//     }
// 
//     public Flowable<DescriptiveNumber> updateListItem(int position) {
//         //fake database interaction that flags the model somehow
//         DescriptiveNumber num = new DescriptiveNumber();
//         num.value = position;
//         num.description = "Magic Number: ";
// 
//         return Flowable.just(num);
//     }
// }
// 
// Path: sample/src/main/java/com/metova/privvy/sample/models/DescriptiveNumber.java
// public class DescriptiveNumber {
// 
//     public int value;
//     public String description;
// 
//     public DescriptiveNumber() {
// 
//     }
// }


// Path: sample/src/main/java/com/metova/privvy/sample/ui/list/ListInteractor.java
import com.metova.privvy.PrivvyInteractor;
import com.metova.privvy.sample.db.FakeDb;
import com.metova.privvy.sample.models.DescriptiveNumber;
import java.util.List;
import io.reactivex.Flowable;

package com.metova.privvy.sample.ui.list;




class ListInteractor extends PrivvyInteractor implements ListContract.Interactor {

    private FakeDb fakeDb;
    private ListContract.Router router;

    ListInteractor(FakeDb fakeDb, ListContract.Router router) {
        this.fakeDb = fakeDb;
        this.router = router;
    }

    @Override
    public Flowable<List<DescriptiveNumber>> fetchNumberList() {