Wouldn't you define gas() and whatever class-specific methods in the class itself, instead of in extensions on the protocol?
class SunnyRobot : Robot {
func gas() { ... }
func findSun() { ... }
}