@Override
  protected void processMethodAndType(
      EncoreInteraction encoreInteraction, EncoreInteraction mappingEncoreInteraction) {
    Map<MethodTypePair, List<String>> existingMethodTypeToPubmed =
        mappingEncoreInteraction.getMethodTypePairListMap();

    for (Map.Entry<MethodTypePair, List<String>> entry :
        encoreInteraction.getMethodTypePairListMap().entrySet()) {
      if (existingMethodTypeToPubmed.containsKey(entry.getKey())) {
        List<String> existingPubmeds = existingMethodTypeToPubmed.get(entry.getKey());
        List<String> newPubmeds = encoreInteraction.getMethodTypePairListMap().get(entry.getKey());

        for (String pub : newPubmeds) {
          if (!existingPubmeds.contains(pub)) {
            existingPubmeds.add(pub);
          }
        }
      } else {
        existingMethodTypeToPubmed.put(entry.getKey(), entry.getValue());
      }
    }
  }
 @Override
 protected EncoreInteraction mergeWithExistingEncoreInteraction(
     EncoreInteraction encoreInteraction, int interactionIdFound) {
   EncoreInteraction
       mappingEcoreInteraction; // include additional information about exp, pubmed, ... for this
   // interaction id
   mappingEcoreInteraction = interactionMapping.get(interactionIdFound);
   if (mappingEcoreInteraction == null) {
     throw new IllegalStateException(
         "Could not find an EncoreInteraction with id: " + interactionIdFound);
   }
   /* Check that interactors are in the same order A=A and B=B */
   boolean swapInteractors = true;
   swap_loop:
   for (String acc : mappingEcoreInteraction.getInteractorAccsA().values()) {
     if (encoreInteraction.getInteractorAccsA().containsValue(acc)) {
       swapInteractors = false;
       break swap_loop;
     }
   }
   if (swapInteractors) {
     mappingEcoreInteraction.addInteractorAccsA(encoreInteraction.getInteractorAccsB());
     mappingEcoreInteraction.addInteractorAccsB(encoreInteraction.getInteractorAccsA());
     mappingEcoreInteraction.addOtherInteractorAccsA(encoreInteraction.getOtherInteractorAccsB());
     mappingEcoreInteraction.addOtherInteractorAccsB(encoreInteraction.getOtherInteractorAccsA());
     mappingEcoreInteraction.addOrganismsA(encoreInteraction.getOrganismsB());
     mappingEcoreInteraction.addOrganismsB(encoreInteraction.getOrganismsA());
   } else {
     mappingEcoreInteraction.addInteractorAccsA(encoreInteraction.getInteractorAccsA());
     mappingEcoreInteraction.addInteractorAccsB(encoreInteraction.getInteractorAccsB());
     mappingEcoreInteraction.addOtherInteractorAccsA(encoreInteraction.getOtherInteractorAccsA());
     mappingEcoreInteraction.addOtherInteractorAccsB(encoreInteraction.getOtherInteractorAccsB());
     mappingEcoreInteraction.addOrganismsA(encoreInteraction.getOrganismsA());
     mappingEcoreInteraction.addOrganismsB(encoreInteraction.getOrganismsB());
   }
   mappingEcoreInteraction.addPublicationId(encoreInteraction.getPublicationIds());
   mappingEcoreInteraction.addExperimentToPubmed(encoreInteraction.getExperimentToPubmed());
   mappingEcoreInteraction.addExperimentToDatabase(encoreInteraction.getExperimentToDatabase());
   processMethodAndType(encoreInteraction, mappingEcoreInteraction);
   mappingEcoreInteraction.addAuthors(encoreInteraction.getAuthors());
   mappingEcoreInteraction.addConfidenceValues(encoreInteraction.getConfidenceValues());
   mappingEcoreInteraction.addSourceDatabases(encoreInteraction.getSourceDatabases());
   mappingEcoreInteraction
       .getDistinctPublications()
       .addAll(encoreInteraction.getDistinctPublications());
   return mappingEcoreInteraction;
 }