Buggy code:
public class ConversationActivity extends SneerActivity { public static final String PARTY_PUK = "partyPuk" ; private static final String ACTIVITY_TITLE = "activityTitle" ; private final List < Message > messages = new ArrayList < Message > ( ) ; private ConversationAdapter adapter ; private ActionBar actionBar ; private Party party ; private Conversation conversation ; private PopupMenu menu ; private ImageButton actionButton ; protected boolean justOpened ; private EditText editText ; private int icAction ; private CompositeSubscription subscriptions ; @ Override protected void onPostCreate ( Bundle savedInstanceState ) { super . onPostCreate ( savedInstanceState ) ; setContentView ( activity_conversation ) ; justOpened = true ; actionBar = getActionBar ( ) ; if ( ( actionBar ) != null ) actionBar . setHomeButtonEnabled ( true ) ; party = SneerAndroidSingleton . sneer ( ) . produceParty ( ( ( PublicKey ) ( getIntent ( ) . getExtras ( ) . getSerializable ( ConversationActivity . PARTY_PUK ) ) ) ) ; plugActionBarTitle ( actionBar , party . name ( ) ) ; plugActionBarIcon ( actionBar , SneerAndroidSingleton . sneer ( ) . profileFor ( party ) . selfie ( ) ) ; <START_BUG> conversation = SneerAndroidSingleton . sneer ( ) . conversations ( ) . with ( party ) ; <END_BUG> adapter = new ConversationAdapter ( this , this . getLayoutInflater ( ) , layout . list_item_user_message , layout . list_item_party_message , messages , party ) ; ( ( ListView ) ( findViewById ( messageList ) ) ) . setAdapter ( adapter ) ; editText = ( ( EditText ) ( findViewById ( R . id . editText ) ) ) ; editText . addTextChangedListener ( new TextWatcher ( ) { @ Override public void onTextChanged ( CharSequence s , int start , int before , int count ) { if ( ! ( editText . getText ( ) . toString ( ) . trim ( ) . isEmpty ( ) ) ) actionButton . setImageResource ( ic_action_send ) ; else actionButton . setImageResource ( icAction ) ; } @ Override public void beforeTextChanged ( CharSequence s , int start , int count , int after ) { } @ Override public void afterTextChanged ( Editable s ) { } } ) ; editText . setOnKeyListener ( new OnKeyListener ( ) { @ Override public boolean onKey ( View v , int keyCode , KeyEvent event ) { if ( ! ( isHardwareKeyboardAvailable ( ) ) ) return false ; if ( ! ( ( event . getAction ( ) ) == ( KeyEvent . ACTION_DOWN ) ) ) return false ; if ( ! ( keyCode == ( KeyEvent . KEYCODE_ENTER ) ) ) return false ; handleClick ( editText . getText ( ) . toString ( ) . trim ( ) ) ; return true ; } } ) ; actionButton = ( ( ImageButton ) ( findViewById ( R . id . actionButton ) ) ) ; icAction = drawable . ic_action_send ; actionButton . setImageResource ( icAction ) ; actionButton . setOnClickListener ( new OnClickListener ( ) { @ Override public void onClick ( View v ) { handleClick ( editText . getText ( ) . toString ( ) . trim ( ) ) ; } } ) ; menu = new PopupMenu ( this , actionButton ) ; } private Message lastMessageReceived ( List < Message > ms ) { } private void handleClick ( String text ) { } private void openInteractionMenu ( ) { } @ Override public boolean onOptionsItemSelected ( MenuItem item ) { } private void navigateToProfile ( ) { } private void hideKeyboard ( ) { } private boolean isHardwareKeyboardAvailable ( ) { } @ Override protected void onPause ( ) { } @ Override protected void onResume ( ) { } private Subscription subscribeToMenu ( ) { } private Subscription subscribeToMessages ( ) { } }

Fix:
conversation = SneerAndroidSingleton . sneer ( ) . conversations ( ) . withParty ( party ) ;