def METHOD_NAME(self, file_: typing.TextIO):
    got_header = False
    reader = csv.reader(
        file_,
        self.CSVDialect,
    )
    for data in reader:
        if data[0].startswith("#"):
            continue
        if not got_header:
            qgc, wpl, ver = data[0].split(" ", 3)
            if qgc == "QGC" and wpl == "WPL" and int(ver) in self.known_versions:
                got_header = True
        else:
            yield Waypoint(
                **{
                    k: v(data[i])
                    for i, (k, v) in enumerate(self.fields_map.items(), start=1)
                }
            )