@@ -0,0 +1,1681 @@
+/*%0A * Derived from com.android.mms.data.Conversation%0A * (tag android-4.4.4_r2.0.1)%0A */%0A%0Apackage ca.bmaupin.merge.sms.data;%0A%0Aimport android.content.Context;%0Aimport android.database.Cursor;%0A%0Apublic class Conversation %7B%0A%09private static final int ID             = 0;%0A%09%0A    /**%0A     * Returns a temporary Conversation (not representing one on disk) wrapping%0A     * the contents of the provided cursor.  The cursor should be the one%0A     * returned to your AsyncQueryHandler passed in to %7B@link #startQueryForAll%7D.%0A     * The recipient list of this conversation can be empty if the results%0A     * were not in cache.%0A     */%0A    public static Conversation from(Context context, Cursor cursor) %7B%0A        // First look in the cache for the Conversation and return that one. That way, all the%0A        // people that are looking at the cached copy will get updated when fillFromCursor() is%0A        // called with this cursor.%0A        long threadId = cursor.getLong(ID);%0A        if (threadId %3E 0) %7B%0A            Conversation conv = Cache.get(threadId);%0A            if (conv != null) %7B%0A                fillFromCursor(context, conv, cursor, false);   // update the existing conv in-place%0A                return conv;%0A            %7D%0A        %7D%0A        Conversation conv = new Conversation(context, cursor, false);%0A        try %7B%0A            Cache.put(conv);%0A        %7D catch (IllegalStateException e) %7B%0A            LogTag.error(TAG, %22Tried to add duplicate Conversation to Cache (from cursor): %22 +%0A                    conv);%0A            if (!Cache.replace(conv)) %7B%0A                LogTag.error(%22Converations.from cache.replace failed on %22 + conv);%0A            %7D%0A        %7D%0A        return conv;%0A    %7D%0A%7D%0A

Add Conversation with pristine from() method