def METHOD_NAME(self, data: bytes):
    """
    Log the client connection information and replace the username and password if applicable.
    :param data: the client info data
    """
    pdu = ClientInfoParser().parse(data)
    clientAddress = None
    if pdu.extraInfo:
        clientAddress = decodeUTF16LE(pdu.extraInfo.clientAddress)
    self.log.info("Client Info: username = %(username)r, password = %(password)r, domain = %(domain)r, clientAddress = %(clientAddress)r", {
        "username": pdu.username,
        "password": pdu.password,
        "domain": pdu.domain,
        "clientAddress": clientAddress
    })
    self.recorder.record(pdu, PlayerPDUType.CLIENT_INFO)
    # If set, replace the provided username and password to connect the user regardless of
    # the credentials they entered.
    if self.config.replacementUsername is not None:
        pdu.username = self.config.replacementUsername
    if self.config.replacementPassword is not None:
        pdu.password = self.config.replacementPassword
    if self.config.replacementUsername is not None and self.config.replacementPassword is not None:
        pdu.flags |= ClientInfoFlags.INFO_AUTOLOGON
    # Tell the server we don't want compression (unsure of the effectiveness of these flags)
    pdu.flags &= ~ClientInfoFlags.INFO_COMPRESSION
    pdu.flags &= ~ClientInfoFlags.INFO_CompressionTypeMask
    self.log.debug("Sending %(pdu)s", {"pdu": pdu})
    self.server.sendClientInfo(pdu)