// Path: library/src/main/java/com/yarolegovich/mp/io/StorageModule.java
// public interface StorageModule {
// 
//     void saveBoolean(String key, boolean value);
// 
//     void saveString(String key, String value);
// 
//     void saveInt(String key, int value);
// 
//     void saveStringSet(String key, Set<String> value);
// 
//     boolean getBoolean(String key, boolean defaultVal);
// 
//     String getString(String key, String defaultVal);
// 
//     int getInt(String key, int defaultVal);
// 
//     Set<String> getStringSet(String key, Set<String> defaultVal);
// 
//     void onSaveInstanceState(Bundle outState);
// 
//     void onRestoreInstanceState(Bundle savedState);
// 
//     interface Factory {
//         StorageModule create(Context context);
//     }
// }


import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import com.yarolegovich.mp.io.StorageModule;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static com.yarolegovich.mp.R.styleable.*;
                CharSequence[] defSelected = ta.getTextArray(MaterialMultiChoicePreference_mp_default_selected);
                for (CharSequence cs : defSelected) {
                    defaultSelected.add(cs.toString());
                }
            }
        } finally {
            ta.recycle();
        }
    }

    @Override
    public Set<String> getValue() {
        return storageModule.getStringSet(key, defaultSelected);
    }

    @Override
    public void setValue(Set<String> value) {
        storageModule.saveStringSet(key, value);
        showNewValueIfNeeded(toRepresentation(value));
    }

    @Override
    public void onClick(View v) {
        userInputModule.showMultiChoiceInput(
                key, getTitle(), entries, entryValues,
                itemStates(getValue()),
                this);
    }

    @Override
// Path: library/src/main/java/com/yarolegovich/mp/io/StorageModule.java
// public interface StorageModule {
// 
//     void saveBoolean(String key, boolean value);
// 
//     void saveString(String key, String value);
// 
//     void saveInt(String key, int value);
// 
//     void saveStringSet(String key, Set<String> value);
// 
//     boolean getBoolean(String key, boolean defaultVal);
// 
//     String getString(String key, String defaultVal);
// 
//     int getInt(String key, int defaultVal);
// 
//     Set<String> getStringSet(String key, Set<String> defaultVal);
// 
//     void onSaveInstanceState(Bundle outState);
// 
//     void onRestoreInstanceState(Bundle savedState);
// 
//     interface Factory {
//         StorageModule create(Context context);
//     }
// }


// Path: library/src/main/java/com/yarolegovich/mp/MaterialMultiChoicePreference.java
import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import com.yarolegovich.mp.io.StorageModule;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static com.yarolegovich.mp.R.styleable.*;

                CharSequence[] defSelected = ta.getTextArray(MaterialMultiChoicePreference_mp_default_selected);
                for (CharSequence cs : defSelected) {
                    defaultSelected.add(cs.toString());
                }
            }
        } finally {
            ta.recycle();
        }
    }

    @Override
    public Set<String> getValue() {
        return storageModule.getStringSet(key, defaultSelected);
    }

    @Override
    public void setValue(Set<String> value) {
        storageModule.saveStringSet(key, value);
        showNewValueIfNeeded(toRepresentation(value));
    }

    @Override
    public void onClick(View v) {
        userInputModule.showMultiChoiceInput(
                key, getTitle(), entries, entryValues,
                itemStates(getValue()),
                this);
    }

    @Override
    public void setStorageModule(StorageModule storageModule) {