* it would be good to have a fast-path (s1 == s2) before going into more complicated scenarios
* is it really necessary to check that they are method/val/constructor?