i found a way around of issue with following code: valueFromTarget: aTarget ifAbsent: aBlock selector yourself. ^ (aTarget respondsTo: selector) ifTrue: [ aTarget perform: selector ] ifFalse: [ aBlock value ] I think setting proper readStrategy for Q2FieldAccessor to reify all ivars before using them will fix this.