code: public ServiceReference<V> putReferenceIfAbsent(K key, ServiceReference<V> reference) {
          // If the key is null we can't do anything
          if (key == null)
              return null;
          if (reference == null) {
              // If the reference is null we can't add it to the map but we could still return an existing on if there was one so check this
              return getReference(key);
          }
  
          ConcurrentServiceReferenceElement<V> element = new ConcurrentServiceReferenceElement<V>(referenceName, reference);
          ConcurrentServiceReferenceElement<V> existingEntry = elementMap.putIfAbsent(key, element);
          if (existingEntry == null) {
              return null;
          } else {
              return existingEntry.getReference();
          }
      }
docs: Associates the reference with the key but only if there is not an
  existing reference associated with that key. It will only attempt to add
  the reference to the map if <code>key</code> is not <code>null</code>.
  
  @param key Key associated with this reference
  @param reference ServiceReference for the target service
  @return The service reference that was previously associated with the key or <code>null</code> otherwise
  @see ConcurrentMap#putIfAbsent(Object, Object)