// Path: library/src/main/java/com/onegravity/contactpicker/ContactElement.java
// public interface ContactElement extends Serializable {
// 
//     long getId();
// 
//     String getDisplayName();
// 
//     boolean isChecked();
// 
//     void setChecked(boolean checked, boolean suppressListenerCall);
// 
//     void addOnContactCheckedListener(OnContactCheckedListener listener);
// 
//     boolean matchesQuery(String[] queryStrings);
// 
// }
// 
// Path: library/src/main/java/com/onegravity/contactpicker/Helper.java
// public class Helper {
// 
//     public static boolean isNullOrEmpty(CharSequence string){
//         return string == null || string.length() == 0;
//     }
// 
//     public static DisplayMetrics getDisplayMetrics(Context context) {
//         Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
//         DisplayMetrics metrics = new DisplayMetrics();
//         display.getMetrics( metrics );
//         return metrics;
//     }
// 
//     public static void closeQuietly(Cursor cursor) {
//         try {
//             cursor.close();
//         }
//         catch (Exception ignore) {}
//     }
// 
//     public static void closeQuietly(Closeable closeable) {
//         try {
//             if (closeable != null) {
//                 closeable.close();
//             }
//         } catch (IOException ignore) {}
//     }
// 
// }
// 
// Path: library/src/main/java/com/onegravity/contactpicker/OnContactCheckedListener.java
// public interface OnContactCheckedListener<E extends ContactElement> {
// 
//     void onContactChecked(E contact, boolean wasChecked, boolean isChecked);
// 
// }


import com.onegravity.contactpicker.ContactElement;
import com.onegravity.contactpicker.Helper;
import com.onegravity.contactpicker.OnContactCheckedListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
    @Override
    public long getId() {
        return mId;
    }

    @Override
    public String getDisplayName() {
        return mDisplayName != null ? mDisplayName : "";
    }

    protected void setDisplayName(String value) {
        mDisplayName = value;
    }

    @Override
    public boolean isChecked() {
        return mChecked;
    }

    @Override
    public void setChecked(boolean checked, boolean suppressListenerCall) {
        boolean wasChecked = mChecked;
        mChecked = checked;
        if (!mListeners.isEmpty() && wasChecked != checked && !suppressListenerCall) {
            for (OnContactCheckedListener listener : mListeners) {
                listener.onContactChecked(this, wasChecked, checked);
            }
        }
    }

// Path: library/src/main/java/com/onegravity/contactpicker/ContactElement.java
// public interface ContactElement extends Serializable {
// 
//     long getId();
// 
//     String getDisplayName();
// 
//     boolean isChecked();
// 
//     void setChecked(boolean checked, boolean suppressListenerCall);
// 
//     void addOnContactCheckedListener(OnContactCheckedListener listener);
// 
//     boolean matchesQuery(String[] queryStrings);
// 
// }
// 
// Path: library/src/main/java/com/onegravity/contactpicker/Helper.java
// public class Helper {
// 
//     public static boolean isNullOrEmpty(CharSequence string){
//         return string == null || string.length() == 0;
//     }
// 
//     public static DisplayMetrics getDisplayMetrics(Context context) {
//         Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
//         DisplayMetrics metrics = new DisplayMetrics();
//         display.getMetrics( metrics );
//         return metrics;
//     }
// 
//     public static void closeQuietly(Cursor cursor) {
//         try {
//             cursor.close();
//         }
//         catch (Exception ignore) {}
//     }
// 
//     public static void closeQuietly(Closeable closeable) {
//         try {
//             if (closeable != null) {
//                 closeable.close();
//             }
//         } catch (IOException ignore) {}
//     }
// 
// }
// 
// Path: library/src/main/java/com/onegravity/contactpicker/OnContactCheckedListener.java
// public interface OnContactCheckedListener<E extends ContactElement> {
// 
//     void onContactChecked(E contact, boolean wasChecked, boolean isChecked);
// 
// }


// Path: library/src/main/java/com/onegravity/contactpicker/core/ContactElementImpl.java
import com.onegravity.contactpicker.ContactElement;
import com.onegravity.contactpicker.Helper;
import com.onegravity.contactpicker.OnContactCheckedListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

    @Override
    public long getId() {
        return mId;
    }

    @Override
    public String getDisplayName() {
        return mDisplayName != null ? mDisplayName : "";
    }

    protected void setDisplayName(String value) {
        mDisplayName = value;
    }

    @Override
    public boolean isChecked() {
        return mChecked;
    }

    @Override
    public void setChecked(boolean checked, boolean suppressListenerCall) {
        boolean wasChecked = mChecked;
        mChecked = checked;
        if (!mListeners.isEmpty() && wasChecked != checked && !suppressListenerCall) {
            for (OnContactCheckedListener listener : mListeners) {
                listener.onContactChecked(this, wasChecked, checked);
            }
        }
    }

    @Override