def METHOD_NAME(self, fn: str) -> None:
    self._fn = fn
    with open(fn) as f:
        self._rvif = None
        self._nret = None
        self._line_num = 0
        for line in f.readlines():
            self._line_num += 1
            line = line.rstrip()
            if not line:
                continue
            if line.endswith("\\"):
                continue
            if line.endswith("&&"):
                continue
            self._line = line
            idx = line.find("g_return_val_if_fail")
            if idx != -1:
                self._test_rvif()
                continue
            idx = line.find("return")
            if idx != -1:
                # continue
                if len(self._tokens) == 2:
                    self._test_return()
                continue
            # not a function header
            if line[0] in ["#", " ", "\t", "{", "}", "/"]:
                continue
            # label
            if line.endswith(":"):
                continue
            # remove prefixes
            if line.startswith("static"):
                line = line[7:]
            if line.startswith("inline"):
                line = line[7:]
            # a pointer
            if line.endswith("*"):
                self._rvif = ["NULL"]
                self._nret = ["FALSE"]
                continue
            # not a leading line
            if line.find(" ") != -1:
                continue
            # a type we know
            if line in ["void"]:
                self._rvif = []
                self._nret = []
                continue
            if line in ["gpointer"]:
                self._rvif = ["NULL"]
                self._nret = ["FALSE"]
                continue
            if line in ["gboolean"]:
                self._rvif = ["TRUE", "FALSE"]
                self._nret = ["NULL", "0"]
                continue
            if line in ["guint32"]:
                self._rvif = ["0", "G_MAXUINT32"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["GQuark", "GType"]:
                self._rvif = ["0"]
                self._nret = ["NULL", "0", "TRUE", "FALSE"]
                continue
            if line in ["guint64"]:
                self._rvif = ["0", "G_MAXUINT64"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["guint16"]:
                self._rvif = ["0", "G_MAXUINT16"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["guint8"]:
                self._rvif = ["0", "G_MAXUINT8"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gint64"]:
                self._rvif = ["0", "-1", "G_MAXINT64"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gint32"]:
                self._rvif = ["0", "-1", "G_MAXINT32"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gint16"]:
                self._rvif = ["0", "-1", "G_MAXINT16"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gint8"]:
                self._rvif = ["0", "-1", "G_MAXINT8"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gint", "int"]:
                self._rvif = ["0", "-1", "G_MAXINT"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["guint"]:
                self._rvif = ["0", "G_MAXUINT"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gulong"]:
                self._rvif = ["0", "G_MAXLONG"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gsize", "size_t"]:
                self._rvif = ["0", "G_MAXSIZE"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            if line in ["gssize", "ssize_t"]:
                self._rvif = ["0", "-1", "G_MAXSSIZE"]
                self._nret = ["NULL", "TRUE", "FALSE"]
                continue
            # print('unknown return type {}'.format(line))
            self._rvif = None
            self._nret = None