def rfc(self, natural: bool = True) -> str:
        """
        See https://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes

        :param natural: Whether to return the RFC of a natural person.
            Otherwise return the RFC of a legal person.
        :type natural: bool
        :return: a random Mexican RFC
        """
        birthday = self.generator.date_of_birth()

        if natural:
            first_surname = random.choice(ALPHABET) + random.choice(VOWELS)
            second_surname = random.choice(ALPHABET)
            given_name = random.choice(ALPHABET)
            name_initials = first_surname + second_surname + given_name
            name_initials = FORBIDDEN_WORDS.get(name_initials, name_initials)
        else:
            name_initials = (
                self.random_uppercase_letter() + self.random_uppercase_letter() + self.random_uppercase_letter()
            )

        birth_date = birthday.strftime("%y%m%d")
        disambiguation_code = random.choice(ALPHANUMERIC) + random.choice(ALPHANUMERIC) + random.choice(ALPHANUMERIC)

        random_rfc = name_initials + birth_date + disambiguation_code

        return random_rfc

        See https://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes

        :param natural: Whether to return the RFC of a natural person.
            Otherwise return the RFC of a legal person.
        :type natural: bool
        :return: a random Mexican RFC
        
faker/providers/ssn/es_MX/__init__.py