Program: 50626
Project: 50626
Buggy source:
public Object invoke(final Object o,final Method method,final Object[] objects) throws Throwable {
  final String name=method.getName();
  final BlockingQueue resultQ=new ArrayBlockingQueue(1);
  if (name.equals("String_Node_Str") || name.equals("String_Node_Str") || name.equals("String_Node_Str")) {
    es.execute(new Runnable(){
      public void run(){
        try {
          Transaction txn=Hazelcast.getTransaction();
          if (name.equals("String_Node_Str")) {
            txn.begin();
          }
 else           if (name.equals("String_Node_Str")) {
            txn.commit();
          }
 else           if (name.equals("String_Node_Str")) {
            txn.rollback();
          }
          resultQ.put(NULL_OBJECT);
        }
 catch (        Exception e) {
          try {
            resultQ.put(e);
          }
 catch (          InterruptedException ignored) {
          }
        }
      }
    }
);
  }
 else {
    es.execute(new Runnable(){
      public void run(){
        try {
          Object result=method.invoke(target,objects);
          resultQ.put((result == null) ? NULL_OBJECT : result);
        }
 catch (        Exception e) {
          try {
            resultQ.put(e);
          }
 catch (          InterruptedException ignored) {
          }
        }
      }
    }
);
  }
  Object result=resultQ.take();
  if (name.equals("String_Node_Str")) {
    es.shutdown();
  }
  if (result instanceof Throwable) {
    throw ((Throwable)result);
  }
  return (result == NULL_OBJECT) ? null : result;
}

Fixed version (ground truth):
public Object invoke(final Object o,final Method method,final Object[] objects) throws Throwable {
  final String name=method.getName();
  final BlockingQueue resultQ=new ArrayBlockingQueue(1);
  if (name.equals("String_Node_Str") || name.equals("String_Node_Str") || name.equals("String_Node_Str")) {
    es.execute(new Runnable(){
      public void run(){
        try {
          Transaction txn=Hazelcast.getTransaction();
          if (name.equals("String_Node_Str")) {
            txn.begin();
          }
 else           if (name.equals("String_Node_Str")) {
            txn.commit();
          }
 else           if (name.equals("String_Node_Str")) {
            txn.rollback();
          }
          resultQ.put(NULL_OBJECT);
        }
 catch (        Exception e) {
          try {
            resultQ.put(e);
          }
 catch (          InterruptedException ignored) {
          }
        }
      }
    }
);
  }
 else {
    es.execute(new Runnable(){
      public void run(){
        try {
          Object result=method.invoke(target,objects);
          resultQ.put((result == null) ? NULL_OBJECT : result);
        }
 catch (        Exception e) {
          try {
            resultQ.put(e);
          }
 catch (          InterruptedException ignored) {
          }
        }
      }
    }
);
  }
  Object result=resultQ.poll(5,TimeUnit.SECONDS);
  if (result == null)   throw new RuntimeException("String_Node_Str" + name + "String_Node_Str");
  if (name.equals("String_Node_Str")) {
    es.shutdown();
  }
  if (result instanceof Throwable) {
    throw ((Throwable)result);
  }
  return (result == NULL_OBJECT) ? null : result;
}