docs: def _read_source(self) -> None:
          """
          Reads the source file.
          """
          with open(self.full_path, "rt") as f:
              for linenum, line_with_nl in enumerate(f.readlines(), start=1):
                  line_without_newline = (
                      line_with_nl[:-1] if line_with_nl.endswith(NL)
                      else line_with_nl
                  )
                  if TAB in line_without_newline:
                      self._warn("Tab character at line {}".format(linenum))
                  if CR in line_without_newline:
                      self._warn("Carriage return character at line {} "
                                 "(Windows CR+LF endings?)".format(linenum))
                  self.source_lines.append(line_without_newline)