} else if (targetType == List.class) { if (primitive.hasSize(truffleObject)) { boolean implementsFunction = shouldImplementFunction(truffleObject); TypeAndClass<?> elementType = getGenericParameterType(genericType, 0); obj = TruffleList.create(languageContext, truffleObject, implementsFunction, elementType.clazz, elementType.type); boolean hasKeys = (keyClazz == Object.class || keyClazz == String.class) && primitive.hasKeys(truffleObject); if (hasKeys || hasSize) { boolean implementsFunction = shouldImplementFunction(truffleObject); obj = TruffleMap.create(languageContext, truffleObject, implementsFunction, keyClazz, valueType.clazz, valueType.type); } else {