This seems wrong. Shouldn't this method need to check self.supervised?
What does None mean in this context, and is that documented anywhere?