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