abstract class Outer { inner class FirstInner { inner class SecondInner { inner class ThirdInnner { inner class FourthInner } } } fun foo(): FirstInner.SecondInner.ThirdInnner.FourthInner = TODO() } // method: Outer::foo // jvm signature: ()LOuter$FirstInner$SecondInner$ThirdInnner$FourthInner; // generic signature: ()LOuter$FirstInner$SecondInner.ThirdInnner.FourthInner;