PrimaryDrawerItem.ViewHolder is protected . And the bindView() method, which is public , accepts PrimaryDrawerItem.ViewHolder . But a general external caller cannot invoke this method because it cannot refer a protected nested class PrimaryDrawerItem.ViewHolder . Kotlin prohibits such behavior and requires either to make the parameter visibility equal to the method visibility or to decrease the parameter visibility to be less or equal to the method visibility.

In your case you have to make PrimaryDrawerItem.ViewHolder public or make PrimaryDrawerItem.bindView() protected.