def modify_child_may_throw(key, v)
if @context.is_restricted_to_child
if key == @context.restrict_to_child.first
remainder = @context.restrict_to_child.remainder
if remainder != nil
result = @context.restrict(remainder).resolve(v, @source)
@context = result.context.unrestricted.restrict(@original_restrict)
return result.value
else
return v
end
else
return v
end
else
result = @context.unrestricted.resolve(v, @source)
@context = result.context.unrestricted.restrict(@original_restrict)
result.value
end
end