That is exactly why the return type is not used to discriminate between overlaods - you will get a compiler error if you try.
Think about it - assume you have two overloaded methods:
public HSObject Add(int a, int b) { ... }
public HSSlide Add(int a, int b) { ... }
It looks pretty easy to decide which of these should be called, doesn't it?
HSObject obj = Add(1, 2);
HSSlide slide = Add(1, 2);
But what if you did this:
Add(1,2);
Perfectly legal, you are just ignoring the result. But which result are you ignoring?
And if HSSlide inherits from HSObject, which method should I call? I can put either result into an HSObject variable.
The rule is simple: parameters only. Eliminates all possible confusion, for the compiler, and for us as developers!