That's exactly how it works in C# (.NET in general), and I would take a fairly large bet that's exactly the same in Java. It seems like a regression (when thinking on terms of lower level --> higher level language movement).
Its automatic. If it can't get the source, it will use its built in decompiler, and produce surprisingly readable source anyway (I force it to this mode by default, due to a flaky internet connection).