docs: @Override
      public synchronized void add(DiscoveryEntry discoveryEntry) {
          if (discoveryEntry.getDomain() == null || discoveryEntry.getInterfaceName() == null
                  || discoveryEntry.getParticipantId() == null) {
              String message = "discoveryEntry being registered is not complete: " + discoveryEntry;
              logger.error(message);
              throw new JoynrCommunicationException(message);
          }
  
          synchronized (storeLock) {
              String discoveryEntryId = domainInterfaceParticipantIdKey(discoveryEntry.getDomain(),
                                                                        discoveryEntry.getInterfaceName(),
                                                                        discoveryEntry.getParticipantId());
              DiscoveryEntry entry = capabilityKeyToCapabilityMapping.get(discoveryEntryId);
              // check if a DiscoveryEntry with the same Id already exists
              if (entry != null) {
                  remove(discoveryEntry.getParticipantId());
              }
  
              // update participantId to capability mapping
              capabilityKeyToCapabilityMapping.put(discoveryEntryId, discoveryEntry);
  
              // update time mapping
              registeredCapabilitiesTime.put(discoveryEntryId, System.currentTimeMillis());
  
              // update interfaceDomain to capability mapping
              String domainInterfaceId = domainInterfaceKey(discoveryEntry.getDomain(),
                                                            discoveryEntry.getInterfaceName());
  
              // if domainInterfaceId not in the mapping, map it to an empty map,
              // otherwise use the mapping that is  already there
              List<String> newMapping = new ArrayList<String>();
              List<String> mapping = interfaceAddressToCapabilityMapping.putIfAbsent(domainInterfaceId, newMapping);
              if (mapping == null) {
                  mapping = newMapping;
              }
  
              mapping.add(discoveryEntryId);
  
              // update participantId to capability mapping
              String participantId = discoveryEntry.getParticipantId();
  
              participantIdToCapabilityMapping.put(participantId, discoveryEntryId);
          }
      }