/**
  * Subtracts the probes in the given {@link ExecutionData} object from the store. I.e. for all set
  * probes in the given data object the corresponding probes in this store will be unset. If there
  * is no execution data with id of the given data object this operation will have no effect.
  *
  * @param data execution data to subtract
  * @throws IllegalStateException if the given {@link ExecutionData} object is not compatible to a
  *     corresponding one, that is already contained
  * @see ExecutionData#assertCompatibility(long, String, int)
  */
 public void subtract(final ExecutionData data) throws IllegalStateException {
   final Long id = Long.valueOf(data.getId());
   final ExecutionData entry = entries.get(id);
   if (entry != null) {
     entry.merge(data, false);
   }
 }
 /**
  * Adds the given {@link ExecutionData} object into the store. If there is already execution data
  * with this same class id, this structure is merged with the given one.
  *
  * @param data execution data to add or merge
  * @throws IllegalStateException if the given {@link ExecutionData} object is not compatible to a
  *     corresponding one, that is already contained
  * @see ExecutionData#assertCompatibility(long, String, int)
  */
 public void put(final ExecutionData data) throws IllegalStateException {
   final Long id = Long.valueOf(data.getId());
   final ExecutionData entry = entries.get(id);
   if (entry == null) {
     entries.put(id, data);
     names.add(data.getName());
   } else {
     entry.merge(data);
   }
 }