protected static <K, V> void cacheResult(@Nullable final DomElement context, final Key<Map<K, V>> cacheKind, K key, V value) {
    if (context != null) {
      Map<K, V> cachemap = cacheKind.get(context);
      if (cachemap == null) {
        cacheKind.set(context, cachemap = Collections.synchronizedMap(new HashMap<>()));
      }
      cachemap.put(key, value);
    }
  }
protected static <K, V> void cacheResult(@Nullable final DomElement context, final Key<Map<K, V>> cacheKind, K key, V value)