Right, the problem is that when the schemes are different it goes to the else and resets the scheme, but the if part is still needed to change the inner parts.
I think this would work:
> var displayValue = properties[j].displayValue;
> properties[j].value = properties[j].originalValue;
> properties[j].displayValue = displayValue;
> if (defined(properties[j].getSubscribableNestedProperties())
> { make inner changes }