// Path: soundcloud-api/src/main/java/com/jlubecki/soundcloud/webapi/android/auth/models/AuthenticationResponse.java
// public class AuthenticationResponse {
// 
//     public String access_token;
// 
//     public String scope;
// 
//     public String error;
// 
//     /**
//      * Helper method to determine authentication response type.
//      *
//      * @return The type of the authentication response.
//      */
//     public ResponseType getType() {
//         if (access_token != null) {
//             return ResponseType.TOKEN;
//         }
// 
//         if (error != null) {
//             return ResponseType.ERROR;
//         }
// 
//         return ResponseType.UNKNOWN;
//     }
// 
//     public enum ResponseType {
//         TOKEN,
//         ERROR,
//         UNKNOWN
//     }
// 
//     @Override
//     public String toString() {
//         return "AuthenticationResponse{" +
//                 "access_token='" + access_token + '\'' +
//                 ", scope='" + scope + '\'' +
//                 ", error='" + error + '\'' +
//                 '}';
//     }
// }


import com.jlubecki.soundcloud.webapi.android.auth.models.AuthenticationResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.support.annotation.NonNull;
import android.util.Log;

            return this;
        }

        public Builder setCheckNetwork(boolean shouldDoCheck) {
            this.shouldCheckNetwork = shouldDoCheck;

            return this;
        }

        public Builder onFailure(OnNetworkFailureListener listener) {
            this.onNetworkFailureListener = listener;

            return this;
        }

        public AuthenticationStrategy build() {
            AuthenticationStrategy strategy = new AuthenticationStrategy(context, authenticators);
            strategy.shouldCheckNetwork = shouldCheckNetwork;
            strategy.onNetworkFailureListener = onNetworkFailureListener;

            return strategy;
        }
    }

    public interface OnNetworkFailureListener {
        void onFailure(Throwable throwable);
    }

    public interface ResponseCallback {
// Path: soundcloud-api/src/main/java/com/jlubecki/soundcloud/webapi/android/auth/models/AuthenticationResponse.java
// public class AuthenticationResponse {
// 
//     public String access_token;
// 
//     public String scope;
// 
//     public String error;
// 
//     /**
//      * Helper method to determine authentication response type.
//      *
//      * @return The type of the authentication response.
//      */
//     public ResponseType getType() {
//         if (access_token != null) {
//             return ResponseType.TOKEN;
//         }
// 
//         if (error != null) {
//             return ResponseType.ERROR;
//         }
// 
//         return ResponseType.UNKNOWN;
//     }
// 
//     public enum ResponseType {
//         TOKEN,
//         ERROR,
//         UNKNOWN
//     }
// 
//     @Override
//     public String toString() {
//         return "AuthenticationResponse{" +
//                 "access_token='" + access_token + '\'' +
//                 ", scope='" + scope + '\'' +
//                 ", error='" + error + '\'' +
//                 '}';
//     }
// }


// Path: soundcloud-api/src/main/java/com/jlubecki/soundcloud/webapi/android/auth/AuthenticationStrategy.java
import com.jlubecki.soundcloud.webapi.android.auth.models.AuthenticationResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.support.annotation.NonNull;
import android.util.Log;


            return this;
        }

        public Builder setCheckNetwork(boolean shouldDoCheck) {
            this.shouldCheckNetwork = shouldDoCheck;

            return this;
        }

        public Builder onFailure(OnNetworkFailureListener listener) {
            this.onNetworkFailureListener = listener;

            return this;
        }

        public AuthenticationStrategy build() {
            AuthenticationStrategy strategy = new AuthenticationStrategy(context, authenticators);
            strategy.shouldCheckNetwork = shouldCheckNetwork;
            strategy.onNetworkFailureListener = onNetworkFailureListener;

            return strategy;
        }
    }

    public interface OnNetworkFailureListener {
        void onFailure(Throwable throwable);
    }

    public interface ResponseCallback {
        void onAuthenticationResponse(AuthenticationResponse response);