It's just a convention - Xcode hides methods with leading underscore from the interface, but actually they are public methods in the protocol and you can implement them yourself, but to provide a meaningful implementation you need access to private types.
See How does SwiftUI hides private protocol requirements of SwiftUI.View protocol