Function references: assignment corruption at the second assignment
## Summary
I have 2 different methods and 2 different function reference variables. I assign each of them (one per one), both variables receive the same method.
## System Information
<!-- The more information are provided the easier it is to replicate the bug -->
- **Operating system:** Windows
- **Processor architecture:** x86
- **Compiler version:** trunk
- **Device:** Computer
## Steps to reproduce
Run the example project.
## Example Project
```pascal
program TestRefProcAssignment;
{$mode objfpc}{$H+}
{$ModeSwitch functionreferences}
type
TNotifyProc = reference to procedure();
TMyClass = class
public
procedure One;
procedure Two;
end;
{ TMyClass }
var
OneCounter: Integer = 0;
TwoCounter: Integer = 0;
procedure TMyClass.One;
begin
Writeln('One');
Inc(OneCounter);
end;
procedure TMyClass.Two;
begin
Writeln('Two');
Inc(TwoCounter);
end;
var
One, Two: TNotifyProc;
MyObject: TMyClass;
HasError: Boolean = False;
begin
MyObject := TMyClass.Create;
One := @MyObject.One;
Two := @MyObject.Two;
One(); // writes out One - OK
Two(); // writes out One - Error
if One=Two then // yes, they are equal - Error
HasError := True;
if not ((OneCounter=1) and (TwoCounter=1)) then // Error: OneCounter=2, TwoCounter=0
HasError := True;
if HasError then
Halt(1);
end.
```
## What is the current bug behavior?
The variables `One` and `Two` get both the `@One` method pointer;
## What is the expected (correct) behavior?
`One` should get `@One`, `Two` should get `@Two`.
issue