- *objectResult = TypeBuilder::Runtime::RemoteObject::runtimeCast(resultObj);
- *wasThrown = wasThrownVal;
+ bool wasThrownValue = false;
+ if (!resultTuple->getBoolean(ASCIILiteral("wasThrown"), wasThrownValue)) {
+ errorString = ASCIILiteral("Internal error: result is not a pair of value and wasThrown flag");
+ return;
+ }
+
+ *objectResult = BindingTraits<Protocol::Runtime::RemoteObject>::runtimeCast(resultObject);
+ *wasThrown = wasThrownValue;
+
+ if (savedResultIndex) {
+ int savedIndex = 0;
+ if (resultTuple->getInteger(ASCIILiteral("savedResultIndex"), savedIndex))
+ *savedResultIndex = savedIndex;
+ }