@Override
protected Object executeImpl(Object languageContext, TruffleObject receiver, Object[] args, int offset) {
Object key = args[offset];
Object result = null;
if (isValidKey(receiver, key) && KeyInfo.isReadable(sendKeyInfo(keyInfo, receiver, key))) {
try {
result = toHost.execute(sendRead(read, receiver, key), cache.valueClass, cache.valueType, languageContext);
} catch (ClassCastException | NullPointerException e) {
throw e;
} catch (UnknownIdentifierException e) {
return null;
} catch (UnsupportedMessageException e) {
return null;
}
}
return result;
}