Really really strange behaviour with references

I understand that Set Members in Struct does not work. Even when I wrote my own function to get them. But it should output the same reference that I put into it, yes? So Get should not be called multiple times?

Because the below setup acts really strangely. SetUnitByIndex is written in c++ and has access to the same array that the reference should be coming from. In c++ changing the unit in the array doesn’t change the values in the reference, so therefore they aren’t the same thing.

The strange thing though is, that the Print after SetUnitByIndex shows the changes I made to the unit in the array. Which implies that the reference IS pointing to the unit in the array.

Is the blueprint automatically calling Get each time a function uses the reference and making a copy?
Is the blueprint making a copy of the unit being referred to, at the moment when I put it into a function?
Or is something else happening here?