code: @SuppressWarnings("unchecked")
       static <K, V> Map<K, V> dynamicallyCastMap(Map<?, ?> map,
                                                              Class<K> keyType, 
                                                              Class<V> valueType) {
          if (map == null) {
              return null;                                                                     
          }
          assert checkCollectionMembers(map.keySet(), keyType) :
              "The map contains keys with a type other than " + keyType.getName();
          assert checkCollectionMembers(map.values(), valueType) :
              "The map contains values with a type other than " + valueType.getName();
  
          return (Map<K, V>) map;
      }
docs: Dynamically check that the keys and values in the map are all
  instances of the correct types (or null).
  
  @param <K>
  the map's key type
  @param <V>
  the map's value type
  @param map
  the map to cast
  @param keyType
  the class of the map's key type.
  @param valueType
  the class of the map's value type.
  @return the dynamically-type checked map.
  @throws java.lang.ClassCastException