This slightly changes what self.matches being None means, right? If it's None, it's uninitialized. We'd expect to return [] if it is initialized but there just aren't any matches.