@SuppressWarnings("unchecked")
	public static <K, E extends Number> NumberMap<K, E> newNumberMap(Class<E> elementType) {
		if (elementType == BigDecimal.class) return (NumberMap<K, E>) newBigDecimalMap();
		if (elementType == BigInteger.class) return (NumberMap<K, E>) newBigIntegerMap();
		if (elementType == Byte.class) return (NumberMap<K, E>) newByteMap();
		if (elementType == Long.class) return (NumberMap<K, E>) newLongMap();
		if (elementType == Double.class) return (NumberMap<K, E>) newDoubleMap();
		if (elementType == Float.class) return (NumberMap<K, E>) newFloatMap();
		if (elementType == Integer.class) return (NumberMap<K, E>) newIntegerMap();
		if (elementType == Short.class) return (NumberMap<K, E>) newShortMap();
		else throw new UnsupportedOperationException();
	}
@ SuppressWarnings ( "unchecked" ) public static < K , E extends Number > NumberMap < K , E > newNumberMap ( Class < E > elementType ) { if ( elementType == BigDecimal . class ) return ( NumberMap < K , E > ) newBigDecimalMap ( ) ; if ( elementType == BigInteger . class ) return ( NumberMap < K , E > ) newBigIntegerMap ( ) ; if ( elementType == Byte . class ) return ( NumberMap < K , E > ) newByteMap ( ) ; if ( elementType == Long . class ) return ( NumberMap < K , E > ) newLongMap ( ) ; if ( elementType == Double . class ) return ( NumberMap < K , E > ) newDoubleMap ( ) ; if ( elementType == Float . class ) return ( NumberMap < K , E > ) newFloatMap ( ) ; if ( elementType == Integer . class ) return ( NumberMap < K , E > ) newIntegerMap ( ) ; if ( elementType == Short . class ) return ( NumberMap < K , E > ) newShortMap ( ) ; else throw new UnsupportedOperationException ( ) ; }
Creates a NumberMap for instances of a concrete subclass of Number.

@param <K> key type
@param <E> element type
@param elementType
@return NumberMap&lt;K, E&gt;