Dynamic property access in sync mapping

I try to access a property by using this["propertyName", false] instead of $propertyName$. For example a script property

function string vrtTest() {
   return this["propertyName", false];
}

That works fine when I access the property in the target system browser but fails while simulating and executing the actual workflow. It seems like there's an optimization where every property that is unused is not loaded at all.
As a workaround, I can use the dollar notation in addition, e.g. 

function string vrtTest() {
   return this["propertyName", false];
   // $propertyName$
}

but that would be a bummer.

The real example uses pattern syntax in the source object and not a fixed string. E.g. the source object has a property "pattern" with content "test-{propertyName}" and the script-property reads the value $pattern$ and replaces the containing values with the this[]-notation. The workaround would be to add all possible properties of the source object in order to use them - since these are always all properties, I really want to just define "load all properties" anywhere..

Is there a switch or something that enforces loading all properties (like in the target system browser)?
If not - is there a way to "mark" properties "used" (without actually add a $-reference)?