code: @Override
      public <T> T find(Class<T> entityClass, Object primaryKey, Map<String, Object> properties)
      {
          checkClosed();
          checkTransactionNeeded();
  
          // Store current properties in a variable for post-find reset
          Map<String, Object> currentProperties = getProperties();
  
          // Populate properties in client
          getPersistenceDelegator().populateClientProperties(properties);
          T result = find(entityClass, primaryKey);
  
          // Reset Client properties
          getPersistenceDelegator().populateClientProperties(currentProperties);
          return result;
      }
docs: Find by primary key, using the specified properties. Search for an entity
  of the specified class and primary key. If the entity instance is
  contained in the persistence context it is returned from there. If a
  vendor-specific property or hint is not recognized, it is silently
  ignored.
  
  @param entityClass
  @param primaryKey
  @param properties
  standard and vendor-specific properties and hints
  @return the found entity instance or null if the entity does not exist
  @throws IllegalArgumentException
  if the first argument does not denote an entity type or the
  second argument is is not a valid type for that entity’s
  primary key or is null
  @see javax.persistence.EntityManager#find(java.lang.Class,
  java.lang.Object, java.util.Map)