src/main/java/org/eiichiro/bootleg/Types.java
public static Class<?> getDefaultImplementationType(Type type) {
		Class<?> clazz = getRawType(type);
		return (clazz.isInterface()) ? implementations.get(clazz) : clazz;
	}
public static Class<?> getDefaultImplementationType(Type type) {
		Class<?> clazz = getRawType(type);
		return (clazz.isInterface()) ? implementations.get(clazz) : clazz;
	}
Returns the default implementation type of the specified collection
interface type.
The specified type must be an supported collection. To make it sure, use
{@code #isSupportedCollection(Type)}. If the specified collection type is
<b>not</b> an interface, this method returns the specified implementation
type directly.<br>
<br>
The default implementations are:
<pre>
java.util.Collection -> java.util.ArrayList
java.util.List -> java.util.ArrayList
java.util.Set -> java.util.HashSet
java.util.SortedSet -> java.util.TreeSet
java.util.NavigableSet -> java.util.TreeSet
java.util.Queue -> java.util.PriorityQueue
java.util.Deque -> java.util.ArrayDeque
</pre>

@param type Collection type (must be supported type).
@return The default implementation type of the specified collection
interface type.