Program: 87470
Project: 87470
Buggy source:
public void load(StationData station,final RouteData routeData){
  kill();
  searchLine=routeData.line;
  int bracket=routeData.destination.indexOf('[');
  if (bracket > 0) {
    destination=routeData.destination.subSequence(0,bracket - 1).toString();
  }
 else {
    destination=routeData.line;
  }
  tracker.trackEvent("String_Node_Str","String_Node_Str","String_Node_Str",0);
  realtimeProvider=new TrafikantenRealtime(activity,station.stationId,new IGenericProviderHandler<RealtimeData>(){
    @Override public void onExtra(    int what,    Object obj){
switch (what) {
case TrafikantenRealtime.MSG_TIMEDATA:
        routeData.timeDifference=(Long)obj;
      break;
  }
}
@Override public void onData(RealtimeData item){
  if (item.line.equals(searchLine) && item.destination.equals(destination)) {
    if (routeData.realtimeData == null) {
      routeData.realtimeData=item;
      routeList.notifyDataSetChanged();
    }
 else {
      routeData.realtimeData.addDeparture(item.expectedDeparture,item.realtime,item.stopVisitNote);
      routeList.notifyDataSetChanged();
    }
  }
}
@Override public void onPostExecute(Exception exception){
  activity.setProgressBarIndeterminateVisibility(false);
  realtimeProvider=null;
  if (exception != null) {
    Log.w(TAG,"String_Node_Str" + exception);
    if (exception.getClass().getSimpleName().equals("String_Node_Str")) {
      Toast.makeText(activity,R.string.trafikantenErrorParse,Toast.LENGTH_LONG).show();
    }
 else {
      Toast.makeText(activity,R.string.trafikantenErrorOther,Toast.LENGTH_LONG).show();
    }
  }
 else {
    if (routeData.realtimeData == null) {
      Toast.makeText(activity,R.string.realtimeEmpty,Toast.LENGTH_LONG).show();
    }
  }
  routeList.notifyDataSetChanged();
}
@Override public void onPreExecute(){
  activity.setProgressBarIndeterminateVisibility(true);
}
}
);
}

Fixed version (ground truth):
public void load(StationData station,final RouteData routeData){
  kill();
  searchLine=routeData.line;
  int bracket=routeData.destination.indexOf('[');
  if (bracket > 0) {
    searchDestination=routeData.destination.subSequence(0,bracket - 1).toString();
  }
 else {
    searchDestination=routeData.destination;
  }
  tracker.trackEvent("String_Node_Str","String_Node_Str","String_Node_Str",0);
  realtimeProvider=new TrafikantenRealtime(activity,station.stationId,new IGenericProviderHandler<RealtimeData>(){
    @Override public void onExtra(    int what,    Object obj){
switch (what) {
case TrafikantenRealtime.MSG_TIMEDATA:
        routeData.timeDifference=(Long)obj;
      break;
  }
}
@Override public void onData(RealtimeData item){
  if (item.line.equals(searchLine) && item.destination.equals(searchDestination)) {
    if (routeData.realtimeData == null) {
      routeData.realtimeData=item;
      routeList.notifyDataSetChanged();
    }
 else {
      routeData.realtimeData.addDeparture(item.expectedDeparture,item.realtime,item.stopVisitNote);
      routeList.notifyDataSetChanged();
    }
  }
}
@Override public void onPostExecute(Exception exception){
  activity.setProgressBarIndeterminateVisibility(false);
  realtimeProvider=null;
  if (exception != null) {
    Log.w(TAG,"String_Node_Str" + exception);
    if (exception.getClass().getSimpleName().equals("String_Node_Str")) {
      Toast.makeText(activity,R.string.trafikantenErrorParse,Toast.LENGTH_LONG).show();
    }
 else {
      Toast.makeText(activity,R.string.trafikantenErrorOther,Toast.LENGTH_LONG).show();
    }
  }
 else {
    if (routeData.realtimeData == null) {
      Toast.makeText(activity,R.string.realtimeEmpty,Toast.LENGTH_LONG).show();
    }
  }
  routeList.notifyDataSetChanged();
}
@Override public void onPreExecute(){
  activity.setProgressBarIndeterminateVisibility(true);
}
}
);
}