Program: 32179
Project: 32179
Buggy source:
/** 
 * Handle events coming down from the event stream.
 * @param event the live event
 * @param withPush set to true to trigger pushes when it is required
 */
public void handleLiveEvent(Event event,boolean withPush){
  if (!isActive()) {
    Log.e(LOG_TAG,"String_Node_Str");
    return;
  }
  if (Event.EVENT_TYPE_PRESENCE.equals(event.type)) {
    User userPresence=JsonUtils.toUser(event.content);
    User user=mStore.getUser(userPresence.userId);
    if (user == null) {
      user=userPresence;
      user.lastActiveReceived();
      user.setDataHandler(this);
      mStore.storeUser(user);
    }
 else {
      user.presence=userPresence.presence;
      user.lastActiveAgo=userPresence.lastActiveAgo;
      user.lastActiveReceived();
    }
    if (mCredentials.userId.equals(user.userId)) {
      mStore.setAvatarURL(user.avatarUrl);
      mStore.setDisplayName(user.displayname);
    }
    this.onPresenceUpdate(event,user);
  }
 else   if (Event.EVENT_TYPE_RECEIPT.equals(event.type)) {
    if (event.roomId != null) {
      final Room room=getRoom(event.roomId);
      if (null != room) {
        if (room.handleReceiptEvent(event)) {
          onReceiptEvent(event.roomId);
        }
      }
    }
  }
 else   if (event.isCallEvent()) {
    mCallsManager.handleCallEvent(event);
  }
 else   if (Event.EVENT_TYPE_TAGS.equals(event.type)) {
    if (event.roomId != null) {
      final Room room=getRoom(event.roomId);
      if (null != room) {
        room.handleAccountDataEvents(Arrays.asList(event));
        onRoomTagEvent(event.roomId);
      }
    }
  }
  if (getStore().doesEventExist(event.eventId,event.roomId)) {
    Log.e(LOG_TAG,"String_Node_Str" + event.eventId + "String_Node_Str"+ event.roomId+ "String_Node_Str");
    return;
  }
  if (event.roomId != null) {
    final Room room=getRoom(event.roomId);
    String selfJoinRoomId=null;
    if (Event.EVENT_TYPE_STATE_ROOM_MEMBER.equals(event.type) && TextUtils.equals(event.getSender(),mCredentials.userId) && shouldSelfJoin(event,room.getLiveState())) {
      selfJoinRoomId=event.roomId;
    }
    if (event.stateKey != null) {
      Log.d(LOG_TAG,"String_Node_Str");
      room.setLiveState(room.getLiveState().deepCopy());
      if (!room.processStateEvent(event,Room.EventDirection.FORWARDS)) {
        return;
      }
    }
    storeLiveRoomEvent(event);
    onLiveEvent(event,room.getLiveState());
    if (null != selfJoinRoomId) {
      selfJoin(selfJoinRoomId);
    }
    if (withPush) {
      BingRule bingRule;
      boolean outOfTimeEvent=false;
      JsonObject eventContent=event.getContentAsJsonObject();
      if (eventContent.has("String_Node_Str")) {
        long maxlifetime=eventContent.get("String_Node_Str").getAsLong();
        long eventLifeTime=System.currentTimeMillis() - event.getOriginServerTs();
        outOfTimeEvent=eventLifeTime > maxlifetime;
      }
      if (!Event.EVENT_TYPE_TYPING.equals(event.type) && !Event.EVENT_TYPE_RECEIPT.equals(event.type) && !outOfTimeEvent&& (mBingRulesManager != null)&& (null != (bingRule=mBingRulesManager.fulfilledBingRule(event)))&& bingRule.shouldNotify()) {
        Log.d(LOG_TAG,"String_Node_Str");
        onBingEvent(event,room.getLiveState(),bingRule);
      }
    }
  }
 else {
    Log.e(LOG_TAG,"String_Node_Str" + event.type);
  }
}

Fixed version (ground truth):
/** 
 * Handle events coming down from the event stream.
 * @param event the live event
 * @param withPush set to true to trigger pushes when it is required
 */
public void handleLiveEvent(Event event,boolean withPush){
  if (!isActive()) {
    Log.e(LOG_TAG,"String_Node_Str");
    return;
  }
  if (Event.EVENT_TYPE_PRESENCE.equals(event.type)) {
    User userPresence=JsonUtils.toUser(event.content);
    User user=mStore.getUser(userPresence.userId);
    if (user == null) {
      user=userPresence;
      user.lastActiveReceived();
      user.setDataHandler(this);
      mStore.storeUser(user);
    }
 else {
      user.presence=userPresence.presence;
      user.lastActiveAgo=userPresence.lastActiveAgo;
      user.lastActiveReceived();
    }
    if (mCredentials.userId.equals(user.userId)) {
      mStore.setAvatarURL(user.avatarUrl);
      mStore.setDisplayName(user.displayname);
    }
    this.onPresenceUpdate(event,user);
  }
 else   if (Event.EVENT_TYPE_RECEIPT.equals(event.type)) {
    if (event.roomId != null) {
      final Room room=getRoom(event.roomId);
      if (null != room) {
        if (room.handleReceiptEvent(event)) {
          onReceiptEvent(event.roomId);
        }
      }
    }
  }
 else   if (event.isCallEvent()) {
    mCallsManager.handleCallEvent(event);
  }
 else   if (Event.EVENT_TYPE_TAGS.equals(event.type)) {
    if (event.roomId != null) {
      final Room room=getRoom(event.roomId);
      if (null != room) {
        room.handleAccountDataEvents(Arrays.asList(event));
        onRoomTagEvent(event.roomId);
      }
    }
  }
  if (getStore().doesEventExist(event.eventId,event.roomId)) {
    Log.e(LOG_TAG,"String_Node_Str" + event.eventId + "String_Node_Str"+ event.roomId+ "String_Node_Str");
    return;
  }
  if (event.roomId != null) {
    final Room room=getRoom(event.roomId);
    String selfJoinRoomId=null;
    if (Event.EVENT_TYPE_STATE_ROOM_MEMBER.equals(event.type) && TextUtils.equals(event.getSender(),mCredentials.userId) && shouldSelfJoin(event,room.getLiveState())) {
      selfJoinRoomId=event.roomId;
    }
    if (event.stateKey != null) {
      Log.d(LOG_TAG,"String_Node_Str");
      room.setLiveState(room.getLiveState().deepCopy());
      if (!room.processStateEvent(event,Room.EventDirection.FORWARDS)) {
        return;
      }
    }
    storeLiveRoomEvent(event);
    onLiveEvent(event,room.getLiveState());
    if (null != selfJoinRoomId && MXSession.useSyncV1()) {
      selfJoin(selfJoinRoomId);
    }
    if (withPush) {
      BingRule bingRule;
      boolean outOfTimeEvent=false;
      JsonObject eventContent=event.getContentAsJsonObject();
      if (eventContent.has("String_Node_Str")) {
        long maxlifetime=eventContent.get("String_Node_Str").getAsLong();
        long eventLifeTime=System.currentTimeMillis() - event.getOriginServerTs();
        outOfTimeEvent=eventLifeTime > maxlifetime;
      }
      if (!Event.EVENT_TYPE_TYPING.equals(event.type) && !Event.EVENT_TYPE_RECEIPT.equals(event.type) && !outOfTimeEvent&& (mBingRulesManager != null)&& (null != (bingRule=mBingRulesManager.fulfilledBingRule(event)))&& bingRule.shouldNotify()) {
        Log.d(LOG_TAG,"String_Node_Str");
        onBingEvent(event,room.getLiveState(),bingRule);
      }
    }
  }
 else {
    Log.e(LOG_TAG,"String_Node_Str" + event.type);
  }
}