I don’t think that storing elaborated source is really practical, but I do think we could perhaps supply some form of annotations in which we ignore methods that “did not exist at the time of publish”. This would be used (I imagine) only for crates.io dependencies, so that they keep compiling. This would be relatively easy for std, where we have correct information about when each method was added. I don’t know think it generalizes well though.
Btw, regarding paths in method names, before UFCS, that was precisely what I wanted. I imagined something like this as the explicit form of UFCS:
foo.(some::Trait<...>::method_name)::<...>(...)
instead of today’s
some::Trait::<...>::method_name::<...>(foo, ...)
Many people felt that parens in paths were too complex.
Another place this is relevant: the estwhile fields in traits RFC, which lacked a UFCS-like form.