Both bind and assign loop over a virtual call for each field (IValueBinder / IValueAssigner). Benchmark whether there's a performance benefit to replacing the loop+interface with generated code that does a non-virtual call to each binder/assigner instance.