// Path: storebox-lib/src/main/java/net/orange_box/storebox/enums/PreferencesMode.java
// public enum PreferencesMode {
// 
//     /**
//      * Default.
//      * 
//      * @see android.content.Context#MODE_PRIVATE
//      */
//     MODE_PRIVATE(Context.MODE_PRIVATE),
//     
//     /**
//      * @see android.content.Context#MODE_MULTI_PROCESS
//      */
//     MODE_MULTI_PROCESS(Context.MODE_MULTI_PROCESS),
//     
//     /**
//      * @see android.content.Context#MODE_WORLD_READABLE
//      */
//     @Deprecated
//     MODE_WORLD_READABLE(Context.MODE_WORLD_READABLE),
//     
//     /**
//      * @see android.content.Context#MODE_WORLD_WRITEABLE
//      */
//     @Deprecated
//     MODE_WORLD_WRITEABLE(Context.MODE_WORLD_WRITEABLE);
//     
//     private final int value;
//     
//     private PreferencesMode(int value) {
//         this.value = value;
//     }
//     
//     public int value() {
//         return value;
//     }
// }
// 
// Path: storebox-lib/src/main/java/net/orange_box/storebox/enums/PreferencesType.java
// public enum PreferencesType {
// 
//     /**
//      * Default.
//      * 
//      * @see net.orange_box.storebox.annotations.type.DefaultSharedPreferences
//      * @see android.preference.PreferenceManager#getDefaultSharedPreferences(
//      * android.content.Context)
//      */
//     DEFAULT_SHARED,
// 
//     /**
//      * @see net.orange_box.storebox.annotations.type.ActivityPreferences
//      * @see android.app.Activity#getPreferences(int)
//      */
//     ACTIVITY,
// 
//     /**
//      * @see net.orange_box.storebox.annotations.type.FilePreferences
//      * @see android.content.Context#getSharedPreferences(String, int)
//      */
//     FILE
// }
// 
// Path: storebox-lib/src/main/java/net/orange_box/storebox/enums/SaveMode.java
// public enum SaveMode {
// 
//     /**
//      * Default.
//      *
//      * @see android.content.SharedPreferences.Editor#apply()
//      */
//     APPLY,
// 
//     /**
//      * @see android.content.SharedPreferences.Editor#commit()
//      */
//     COMMIT,
// 
//     /**
//      * {@link android.content.SharedPreferences.Editor#apply()} or
//      * {@link android.content.SharedPreferences.Editor#commit()} will have
//      * to be called explicitly.
//      */
//     NOME
// }


import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
import net.orange_box.storebox.annotations.option.SaveOption;
import net.orange_box.storebox.annotations.type.ActivityPreferences;
import net.orange_box.storebox.annotations.type.DefaultSharedPreferences;
import net.orange_box.storebox.annotations.type.FilePreferences;
import net.orange_box.storebox.enums.PreferencesMode;
import net.orange_box.storebox.enums.PreferencesType;
import net.orange_box.storebox.enums.SaveMode;
import java.lang.reflect.Proxy;
import java.util.Locale;
        private PreferencesType preferencesType = PreferencesType.DEFAULT_SHARED;
        private String preferencesName = "";
        private PreferencesMode preferencesMode = PreferencesMode.MODE_PRIVATE;
        private SaveMode saveMode = SaveMode.APPLY;

        public Builder(Context context, Class<T> cls) {
            this.context = context;
            this.cls = cls;
            
            readAnnotations();
        }

        public Builder preferencesType(PreferencesType value) {
            preferencesType = value;
            return this;
        }

        public Builder preferencesType(
                PreferencesType value, String name) {

            preferencesType = value;
            preferencesName = name;
            return this;
        }

        public Builder preferencesMode(PreferencesMode value) {
            preferencesMode = value;
            return this;
        }

// Path: storebox-lib/src/main/java/net/orange_box/storebox/enums/PreferencesMode.java
// public enum PreferencesMode {
// 
//     /**
//      * Default.
//      * 
//      * @see android.content.Context#MODE_PRIVATE
//      */
//     MODE_PRIVATE(Context.MODE_PRIVATE),
//     
//     /**
//      * @see android.content.Context#MODE_MULTI_PROCESS
//      */
//     MODE_MULTI_PROCESS(Context.MODE_MULTI_PROCESS),
//     
//     /**
//      * @see android.content.Context#MODE_WORLD_READABLE
//      */
//     @Deprecated
//     MODE_WORLD_READABLE(Context.MODE_WORLD_READABLE),
//     
//     /**
//      * @see android.content.Context#MODE_WORLD_WRITEABLE
//      */
//     @Deprecated
//     MODE_WORLD_WRITEABLE(Context.MODE_WORLD_WRITEABLE);
//     
//     private final int value;
//     
//     private PreferencesMode(int value) {
//         this.value = value;
//     }
//     
//     public int value() {
//         return value;
//     }
// }
// 
// Path: storebox-lib/src/main/java/net/orange_box/storebox/enums/PreferencesType.java
// public enum PreferencesType {
// 
//     /**
//      * Default.
//      * 
//      * @see net.orange_box.storebox.annotations.type.DefaultSharedPreferences
//      * @see android.preference.PreferenceManager#getDefaultSharedPreferences(
//      * android.content.Context)
//      */
//     DEFAULT_SHARED,
// 
//     /**
//      * @see net.orange_box.storebox.annotations.type.ActivityPreferences
//      * @see android.app.Activity#getPreferences(int)
//      */
//     ACTIVITY,
// 
//     /**
//      * @see net.orange_box.storebox.annotations.type.FilePreferences
//      * @see android.content.Context#getSharedPreferences(String, int)
//      */
//     FILE
// }
// 
// Path: storebox-lib/src/main/java/net/orange_box/storebox/enums/SaveMode.java
// public enum SaveMode {
// 
//     /**
//      * Default.
//      *
//      * @see android.content.SharedPreferences.Editor#apply()
//      */
//     APPLY,
// 
//     /**
//      * @see android.content.SharedPreferences.Editor#commit()
//      */
//     COMMIT,
// 
//     /**
//      * {@link android.content.SharedPreferences.Editor#apply()} or
//      * {@link android.content.SharedPreferences.Editor#commit()} will have
//      * to be called explicitly.
//      */
//     NOME
// }


// Path: storebox-lib/src/main/java/net/orange_box/storebox/StoreBox.java
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
import net.orange_box.storebox.annotations.option.SaveOption;
import net.orange_box.storebox.annotations.type.ActivityPreferences;
import net.orange_box.storebox.annotations.type.DefaultSharedPreferences;
import net.orange_box.storebox.annotations.type.FilePreferences;
import net.orange_box.storebox.enums.PreferencesMode;
import net.orange_box.storebox.enums.PreferencesType;
import net.orange_box.storebox.enums.SaveMode;
import java.lang.reflect.Proxy;
import java.util.Locale;

        private PreferencesType preferencesType = PreferencesType.DEFAULT_SHARED;
        private String preferencesName = "";
        private PreferencesMode preferencesMode = PreferencesMode.MODE_PRIVATE;
        private SaveMode saveMode = SaveMode.APPLY;

        public Builder(Context context, Class<T> cls) {
            this.context = context;
            this.cls = cls;
            
            readAnnotations();
        }

        public Builder preferencesType(PreferencesType value) {
            preferencesType = value;
            return this;
        }

        public Builder preferencesType(
                PreferencesType value, String name) {

            preferencesType = value;
            preferencesName = name;
            return this;
        }

        public Builder preferencesMode(PreferencesMode value) {
            preferencesMode = value;
            return this;
        }

        public Builder saveMode(SaveMode value) {