@Override
 public int compareTo(OutputEntry e) {
   long dl = start_time - e.start_time;
   if (dl < 0) return -1;
   if (dl > 0) return 1;
   dl = finish_time - e.finish_time;
   if (dl < 0) return -1;
   if (dl > 0) return 1;
   int idl = entry_thread.getOutputId() - e.entry_thread.getOutputId();
   if (idl < 0) return -1;
   if (idl > 0) return 1;
   return 0;
 }
 @Override
 public String toString() {
   StringBuffer buf = new StringBuffer();
   buf.append(entry_loc);
   if (is_exit) buf.append("^");
   buf.append(" ");
   buf.append(entry_time);
   buf.append(" ");
   buf.append(entry_thread.getOutputId());
   buf.append(" ");
   buf.append(entry_o1);
   buf.append(" ");
   buf.append(entry_o2);
   return buf.toString();
 }