// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/ui/common/presenter/BasePresenter.java
// public abstract class BasePresenter<T extends MVPView> implements Presenter {
// 
//     protected final T view;
// 
//     protected BasePresenter(T view) {
//         this.view = view;
//     }
// 
//     @Override
//     public void onStart(@Nullable Bundle savedInstanceState) {
//     }
// 
//     @Override
//     public void onResume() {
//     }
// 
//     @Override
//     public void onPause() {
//     }
// 
//     @Override
//     public void onSaveInstanceState(Bundle outState) {
//     }
// 
//     @Override
//     public void onEnd() {
//     }
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/ui/example_1/fragment/view/Example1View.java
// public interface Example1View extends MVPView {
// 
//     void showSomething(String something);
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/util/PerActivityUtil.java
// @PerActivity
// public final class PerActivityUtil {
// 
//     private final Activity activity;
// 
//     @Inject
//     PerActivityUtil(Activity activity) {
//         this.activity = activity;
//     }
// 
//     /**
//      * @return the result of the work done here as a string. For this example, this returns its
//      * {@link #hashCode()} and the activity's {@link #hashCode()}.
//      */
//     public String doSomething() {
//         return "PerActivityUtil: " + hashCode() + ", Activity: " + activity.hashCode();
//     }
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/util/PerFragmentUtil.java
// @PerFragment
// public final class PerFragmentUtil {
// 
//     private final Fragment fragment;
// 
//     @Inject
//     PerFragmentUtil(@Named(BaseFragmentModule.FRAGMENT) Fragment fragment) {
//         this.fragment = fragment;
//     }
// 
//     /**
//      * @return the result of the work done here as a string. For this example, this returns its
//      * {@link #hashCode()} and the fragment's {@link #hashCode()}.
//      */
//     public String doSomething() {
//         return "PerFragmentUtil: " + hashCode() + ", Fragment: " + fragment.hashCode();
//     }
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/util/SingletonUtil.java
// @Singleton
// public final class SingletonUtil {
// 
//     private final Application application;
// 
//     @Inject
//     SingletonUtil(Application application) {
//         this.application = application;
//     }
// 
//     /**
//      * @return the result of the work done here as a string. For this example, this returns its
//      * {@link #hashCode()} and the application's {@link #hashCode()}.
//      */
//     public String doSomething() {
//         return "SingletonUtil: " + hashCode() + ", Application: " + application.hashCode();
//     }
// }


import com.vestrel00.daggerbutterknifemvp.inject.PerFragment;
import com.vestrel00.daggerbutterknifemvp.ui.common.presenter.BasePresenter;
import com.vestrel00.daggerbutterknifemvp.ui.example_1.fragment.view.Example1View;
import com.vestrel00.daggerbutterknifemvp.util.PerActivityUtil;
import com.vestrel00.daggerbutterknifemvp.util.PerFragmentUtil;
import com.vestrel00.daggerbutterknifemvp.util.SingletonUtil;
import javax.inject.Inject;
/*
 * Copyright 2018 Vandolf Estrellado
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.vestrel00.daggerbutterknifemvp.ui.example_1.fragment.presenter;



/**
 * An implementation of {@link Example1Presenter}.
 */
@PerFragment
final class Example1PresenterImpl extends BasePresenter<Example1View> implements Example1Presenter {

    private final SingletonUtil singletonUtil;
    private final PerActivityUtil perActivityUtil;
    private final PerFragmentUtil perFragmentUtil;

    @Inject
    Example1PresenterImpl(Example1View view, SingletonUtil singletonUtil,
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/ui/common/presenter/BasePresenter.java
// public abstract class BasePresenter<T extends MVPView> implements Presenter {
// 
//     protected final T view;
// 
//     protected BasePresenter(T view) {
//         this.view = view;
//     }
// 
//     @Override
//     public void onStart(@Nullable Bundle savedInstanceState) {
//     }
// 
//     @Override
//     public void onResume() {
//     }
// 
//     @Override
//     public void onPause() {
//     }
// 
//     @Override
//     public void onSaveInstanceState(Bundle outState) {
//     }
// 
//     @Override
//     public void onEnd() {
//     }
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/ui/example_1/fragment/view/Example1View.java
// public interface Example1View extends MVPView {
// 
//     void showSomething(String something);
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/util/PerActivityUtil.java
// @PerActivity
// public final class PerActivityUtil {
// 
//     private final Activity activity;
// 
//     @Inject
//     PerActivityUtil(Activity activity) {
//         this.activity = activity;
//     }
// 
//     /**
//      * @return the result of the work done here as a string. For this example, this returns its
//      * {@link #hashCode()} and the activity's {@link #hashCode()}.
//      */
//     public String doSomething() {
//         return "PerActivityUtil: " + hashCode() + ", Activity: " + activity.hashCode();
//     }
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/util/PerFragmentUtil.java
// @PerFragment
// public final class PerFragmentUtil {
// 
//     private final Fragment fragment;
// 
//     @Inject
//     PerFragmentUtil(@Named(BaseFragmentModule.FRAGMENT) Fragment fragment) {
//         this.fragment = fragment;
//     }
// 
//     /**
//      * @return the result of the work done here as a string. For this example, this returns its
//      * {@link #hashCode()} and the fragment's {@link #hashCode()}.
//      */
//     public String doSomething() {
//         return "PerFragmentUtil: " + hashCode() + ", Fragment: " + fragment.hashCode();
//     }
// }
// 
// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/util/SingletonUtil.java
// @Singleton
// public final class SingletonUtil {
// 
//     private final Application application;
// 
//     @Inject
//     SingletonUtil(Application application) {
//         this.application = application;
//     }
// 
//     /**
//      * @return the result of the work done here as a string. For this example, this returns its
//      * {@link #hashCode()} and the application's {@link #hashCode()}.
//      */
//     public String doSomething() {
//         return "SingletonUtil: " + hashCode() + ", Application: " + application.hashCode();
//     }
// }


// Path: app/src/main/java/com/vestrel00/daggerbutterknifemvp/ui/example_1/fragment/presenter/Example1PresenterImpl.java
import com.vestrel00.daggerbutterknifemvp.inject.PerFragment;
import com.vestrel00.daggerbutterknifemvp.ui.common.presenter.BasePresenter;
import com.vestrel00.daggerbutterknifemvp.ui.example_1.fragment.view.Example1View;
import com.vestrel00.daggerbutterknifemvp.util.PerActivityUtil;
import com.vestrel00.daggerbutterknifemvp.util.PerFragmentUtil;
import com.vestrel00.daggerbutterknifemvp.util.SingletonUtil;
import javax.inject.Inject;

/*
 * Copyright 2018 Vandolf Estrellado
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.vestrel00.daggerbutterknifemvp.ui.example_1.fragment.presenter;



/**
 * An implementation of {@link Example1Presenter}.
 */
@PerFragment
final class Example1PresenterImpl extends BasePresenter<Example1View> implements Example1Presenter {

    private final SingletonUtil singletonUtil;
    private final PerActivityUtil perActivityUtil;
    private final PerFragmentUtil perFragmentUtil;

    @Inject
    Example1PresenterImpl(Example1View view, SingletonUtil singletonUtil,
                          PerActivityUtil perActivityUtil, PerFragmentUtil perFragmentUtil) {