docs: public static Class<?> mostSpecificSharedType(final Collection<Class<?>> types)
  	{
  		final Collection<Class<?>> potentiallySharedTypes = superclassesOf(types);
  		potentiallySharedTypes.addAll(types);
  
  		final Collection<Class<?>> sharedTypes = new TreeSet<Class<?>>(new ClassComparator());
  		for (final Class<?> potentiallySharedType : potentiallySharedTypes)
  		{
  			int matches = 0;
  			for (final Class<?> type : types)
  			{
  				if (potentiallySharedType.isAssignableFrom(type))
  				{
  					matches++;
  				}
  			}
  			if (matches == types.size())
  			{
  				sharedTypes.add(potentiallySharedType);
  			}
  		}
  		if (sharedTypes.isEmpty())
  		{
  			return null;
  		}
  		return sharedTypes.iterator().next();
  	}