docs: public PersistenceDelegate getPersistenceDelegate(Class<?> type)
  	{
  		if (type == null)
  		{
  			return nullPD; // may be return a special PD?
  		}
  
  		// registered delegate
  		PersistenceDelegate registeredPD = delegates.get(type);
  		if (registeredPD != null)
  		{
  			return registeredPD;
  		}
  
  		if (type.getName().startsWith(UtilCollectionsPersistenceDelegate.CLASS_PREFIX))
  		{
  			return utilCollectionsPD;
  		}
  
  		if (type.isArray())
  		{
  			return arrayPD;
  		}
  
  		if (Proxy.isProxyClass(type))
  		{
  			return proxyPD;
  		}
  
  		// check "persistenceDelegate" property
  		try
  		{
  			BeanInfo beanInfo = Introspector.getBeanInfo(type);
  			if (beanInfo != null)
  			{
  				PersistenceDelegate pd = (PersistenceDelegate) beanInfo.getBeanDescriptor().getValue("persistenceDelegate"); //$NON-NLS-1$
  				if (pd != null)
  				{
  					return pd;
  				}
  			}
  		}
  		catch (Exception e)
  		{
  			// Ignored
  		}
  
  		// default persistence delegate
  		return defaultPD;
  	}