final ObjectAdapter onAdapter = performContext.getOnAdapter();
final ObjectMember nakedObjectMember = performContext.getObjectMember();
final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
// set
final PropertySetterFacet setterFacet = otoa.getFacet(PropertySetterFacet.class);
if (setterFacet == null) {
final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
throw ScenarioBoundValueException.current(onMemberBinding, "(cannot set)");
}
// safe to obtain since guaranteed by superclass
final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
final ScenarioCell arg0Cell = argumentCells.get(0);
// obtain existing as 'context' (used if this is a parsed @Value)
final ObjectAdapter contextAdapter = otoa.get(onAdapter);
// validate parameter
final ObjectAdapter toSetAdapter = performContext.getPeer().getAdapter(contextAdapter, otoa.getSpecification(), arg0Binding, arg0Cell);
final Consent validConsent = otoa.isAssociationValid(onAdapter, toSetAdapter);
if (validConsent.isVetoed()) {
throw ScenarioBoundValueException.current(arg0Binding, validConsent.getReason());
}
setterFacet.setProperty(onAdapter, toSetAdapter);