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;
}