Program: 92554
Project: 92554
Buggy source:
/** 
 * Return the event in the trace according to the given context. Read it if necessary. <p> Similar (same?) as GetNextEvent except that calling ParseEvent twice will return the same event
 * @param context Current TmfContext where to get the event
 * @return The LttngEvent we read of null if no event are available
 * @see org.eclipse.linuxtools.lttng.core.event.LttngLocation
 * @see org.eclipse.linuxtools.tmf.core.trace.TmfContext
 */
@Override public synchronized LttngEvent parseEvent(ITmfContext context){
  if (PRINT_DEBUG) {
    System.out.println("String_Node_Str" + context.getLocation());
  }
  LttngEvent returnedEvent=null;
  LttngLocation curLocation=null;
  if (context.getLocation() == null) {
    curLocation=new LttngLocation();
    context.setLocation(curLocation);
  }
 else {
    curLocation=(LttngLocation)context.getLocation();
  }
  if (((!(curLocation.isLastOperationParse())) && ((!(curLocation.isLastOperationReadNext())))) || (previousLocation.getOperationTimeValue() != curLocation.getOperationTimeValue())) {
    if (previousLocation.getOperationTimeValue() != curLocation.getOperationTimeValue()) {
      if (PRINT_DEBUG) {
        System.out.println("String_Node_Str" + previousLocation.getOperationTimeValue() + "String_Node_Str"+ curLocation.getOperationTimeValue()+ "String_Node_Str");
      }
      seekEvent(curLocation.getOperationTime());
    }
    returnedEvent=readEvent(curLocation);
  }
 else {
    returnedEvent=currentLttngEvent;
  }
  if (returnedEvent != null) {
    previousLocation.setOperationTime((LttngTimestamp)returnedEvent.getTimestamp());
    curLocation.setOperationTime((LttngTimestamp)returnedEvent.getTimestamp());
  }
  previousLocation.setLastOperationParse();
  curLocation.setLastOperationParse();
  return returnedEvent;
}

Fixed version (ground truth):
/** 
 * Return the event in the trace according to the given context. Read it if necessary. <p> Similar (same?) as GetNextEvent except that calling ParseEvent twice will return the same event
 * @param context Current TmfContext where to get the event
 * @return The LttngEvent we read of null if no event are available
 * @see org.eclipse.linuxtools.lttng.core.event.LttngLocation
 * @see org.eclipse.linuxtools.tmf.core.trace.TmfContext
 */
@Override public synchronized LttngEvent parseEvent(ITmfContext context){
  if (PRINT_DEBUG) {
    System.out.println("String_Node_Str" + context.getLocation());
  }
  LttngEvent returnedEvent=null;
  LttngLocation curLocation=null;
  if (context.getLocation() == null) {
    curLocation=new LttngLocation();
    context.setLocation(curLocation);
  }
 else {
    curLocation=(LttngLocation)context.getLocation();
  }
  if (!curLocation.isLastOperationParse() || (previousLocation.getOperationTimeValue() != curLocation.getOperationTimeValue())) {
    if (previousLocation.getOperationTimeValue() != curLocation.getOperationTimeValue()) {
      if (PRINT_DEBUG) {
        System.out.println("String_Node_Str" + previousLocation.getOperationTimeValue() + "String_Node_Str"+ curLocation.getOperationTimeValue()+ "String_Node_Str");
      }
      seekEvent(curLocation.getOperationTime());
    }
    returnedEvent=readEvent(curLocation);
  }
 else {
    returnedEvent=currentLttngEvent;
  }
  if (returnedEvent != null) {
    previousLocation.setOperationTime((LttngTimestamp)returnedEvent.getTimestamp());
    curLocation.setOperationTime((LttngTimestamp)returnedEvent.getTimestamp());
  }
  previousLocation.setLastOperationParse();
  curLocation.setLastOperationParse();
  return returnedEvent;
}