static TruffleMapCache lookup(Object languageContext, Class<?> receiverClass, Class<?> keyClass, Class<?> valueClass, Type valueType) { EngineSupport engine = JavaInterop.ACCESSOR.engine(); if (engine == null) { return new TruffleMapCache(receiverClass, keyClass, valueClass, valueType); } Key cacheKey = new Key(receiverClass, keyClass, valueType); TruffleMapCache cache = engine.lookupJavaInteropCodeCache(languageContext, cacheKey, TruffleMapCache.class); if (cache == null) { cache = engine.installJavaInteropCodeCache(languageContext, cacheKey, new TruffleMapCache(receiverClass, keyClass, valueClass, valueType), TruffleMapCache.class); } assert cache.receiverClass == receiverClass; assert cache.keyClass == keyClass; assert cache.valueClass == valueClass; assert cache.valueType == valueType; return cache; }