Program: 188733
Project: 188733
Buggy source:
@Override public List<Report> runPluginOnTransferredResources(Plugin<TransferredResource> plugin,List<TransferredResource> resources){
  try {
    LOGGER.info("String_Node_Str",plugin.getName());
    int multiplier=0;
    plugin.beforeExecute(index,model,storage);
    List<Future<Object>> futures=new ArrayList<Future<Object>>();
    List<TransferredResource> block=new ArrayList<TransferredResource>();
    for (    TransferredResource resource : resources) {
      if (block.size() == BLOCK_SIZE) {
        futures.add(Patterns.ask(workersRouter,new PluginMessage<TransferredResource>(block,plugin),DEFAULT_TIMEOUT));
        block=new ArrayList<TransferredResource>();
        multiplier++;
      }
      block.add(resource);
    }
    if (!block.isEmpty()) {
      futures.add(Patterns.ask(workersRouter,new PluginMessage<TransferredResource>(block,plugin),DEFAULT_TIMEOUT));
      multiplier++;
    }
    final Future<Iterable<Object>> sequenceResult=Futures.sequence(futures,workersSystem.dispatcher());
    Iterable<Object> reports=Await.result(sequenceResult,Duration.create(multiplier * TIMEOUT,TIMEOUT_UNIT));
    plugin.afterExecute(index,model,storage);
    LOGGER.info("String_Node_Str",plugin.getName());
    return mapToReports(reports);
  }
 catch (  Exception e) {
    LOGGER.error("String_Node_Str",e);
  }
  LOGGER.info("String_Node_Str",plugin.getName());
  return null;
}

Fixed version (ground truth):
@Override public List<Report> runPluginOnTransferredResources(Plugin<TransferredResource> plugin,List<TransferredResource> resources){
  try {
    LOGGER.info("String_Node_Str",plugin.getName());
    int multiplier=0;
    List<Future<Object>> futures=new ArrayList<Future<Object>>();
    List<Plugin<TransferredResource>> innerPlugins=new ArrayList<>();
    Plugin<TransferredResource> innerPlugin;
    List<TransferredResource> block=new ArrayList<TransferredResource>();
    for (    TransferredResource resource : resources) {
      if (block.size() == BLOCK_SIZE) {
        innerPlugin=RodaCoreFactory.getPluginManager().getPlugin(plugin.getClass().getCanonicalName(),TransferredResource.class);
        innerPlugin.setParameterValues(plugin.getParameterValues());
        innerPlugins.add(innerPlugin);
        innerPlugin.beforeExecute(index,model,storage);
        futures.add(Patterns.ask(workersRouter,new PluginMessage<TransferredResource>(block,innerPlugin),DEFAULT_TIMEOUT));
        block=new ArrayList<TransferredResource>();
        multiplier++;
      }
      block.add(resource);
    }
    if (!block.isEmpty()) {
      innerPlugin=RodaCoreFactory.getPluginManager().getPlugin(plugin.getClass().getCanonicalName(),TransferredResource.class);
      innerPlugin.setParameterValues(plugin.getParameterValues());
      innerPlugins.add(innerPlugin);
      innerPlugin.beforeExecute(index,model,storage);
      futures.add(Patterns.ask(workersRouter,new PluginMessage<TransferredResource>(block,innerPlugin),DEFAULT_TIMEOUT));
      multiplier++;
    }
    final Future<Iterable<Object>> sequenceResult=Futures.sequence(futures,workersSystem.dispatcher());
    Iterable<Object> reports=Await.result(sequenceResult,Duration.create(multiplier * TIMEOUT,TIMEOUT_UNIT));
    for (    Plugin<TransferredResource> p : innerPlugins) {
      p.afterExecute(index,model,storage);
    }
    LOGGER.info("String_Node_Str",plugin.getName());
    return mapToReports(reports);
  }
 catch (  Exception e) {
    LOGGER.error("String_Node_Str",e);
  }
  LOGGER.info("String_Node_Str",plugin.getName());
  return null;
}