There are some corner cases (two (inner) types in one source file can see each other's private methods), but I don't mind ignoring them for now.