Thank you for your answers and sorry for not being here for a while.
Based on information from you, I have achived what I needed, but there are still things that are mistery for me.
That was my thinking before I wrote this post. But it somehow did not fit to what was happening in my project. I was loading a class, changing its VI properties and then call this VI using dynamic dispach mechanism. It wasn't modified as I expected. So I suspected that LV preallocate clones for dd VIs while loading class (and I wrongly assumed that those are VI with "instance" suffix). And this would fit to what was said after:
So I have created this example:
And this is what happens when I call this VI first time I open the project:
What supprised me most is that even though LV has allocated single clone for dd vi right after class loading, changes made on reference to its prototype applies to the clone as well (which, for some reason, is not the case in my project..). And changes applies to clones that are created afterwards which is expected. Exactly the same behaviour can be seen in executable built based on this example.
Second run after project loading, has both clones in the memory from the beginning. Now operating on the reference has no effect on both clones.