If thisType is a value type and thisType implements method then ptr is passed unmodified as the ‘this’ pointer to a call method instruction, for the implementation of method by thisType.
If thisType is a value type and thisType does not implement method then * ptr is dereferenced, boxed*, and passed as the ‘this’ pointer to the callvirt method instruction.