Overloaded methods cannot be properly assigned as an event handler
## Summary
An overloaded method can only be assigned to an event handler if the "correct" method (i.e. the one with parameters matching the event) is declared before the alternatives having non-matching parameter lists.
## System Information
<!-- The more information are provided the easier it is to replicate the bug -->
- **Operating system:** Windows
- **Processor architecture:** x86-64
- **Compiler version:** 3.2.2
- **Device:** Computer
## Steps to reproduce
see example below
## Example Project
```pascal
program Project1;
uses Classes;
type TTest = class(TObject)
procedure SomeEvent (Sender: NativeInt); overload;
procedure SomeEvent (Sender: TObject); overload;
end;
procedure TTest.SomeEvent (Sender: TObject);
begin
end;
procedure TTest.SomeEvent (Sender: NativeInt);
begin
end;
var
x: TTest;
y: TStringList;
begin
x := TTest.Create;
y := TStringList.Create;
y.OnChange := @x.SomeEvent;
end.
```
## What is the current bug behavior?
The code shown above fails to compile:
``project1.lpr(25,17) Error: Incompatible types: got "<procedure variable type of procedure(NativeInt) of object;Register>" expected "<procedure variable type of procedure(TObject) of object;Register>"``
When swapping both method declarations (so that ``SomeEvent(Sender: TObject)`` is declared first), it works.
## What is the expected (correct) behavior?
The compiler should be able to choose the correct variant of the overloaded method regardless of the order of declaration.
issue