public static boolean equals(CharSequence cs1, CharSequence cs2) {
        return cs1 == null ? cs2 == null : cs1.equals(cs2);
    }
<p>Compares two CharSequences, returning {@code true} if they are equal.</p>

<p>{@code null}s are handled without exceptions. Two {@code null}
references are considered to be equal. The comparison is case sensitive.</p>

<pre>
StringUtils.equals(null, null)   = true
StringUtils.equals(null, "abc")  = false
StringUtils.equals("abc", null)  = false
StringUtils.equals("abc", "abc") = true
StringUtils.equals("abc", "ABC") = false
</pre>

@see String#equals(Object)
@param cs1  the first CharSequence, may be null
@param cs2  the second CharSequence, may be null
@return {@code true} if the CharSequences are equal, case sensitive, or
 both {@code null}
@since 3.0 Changed signature from equals(String, String) to equals(CharSequence, CharSequence)
android/android_framework/base/src/main/java/lang3/StringUtils.java