docs: def load(cls, fp):
          """
          Parse the contents of the `~io.IOBase.readline`-supporting file-like
          object ``fp`` as a simple line-oriented ``.properties`` file and return
          a `PropertiesFile` instance.
  
          ``fp`` may be either a text or binary filehandle, with or without
          universal newlines enabled.  If it is a binary filehandle, its contents
          are decoded as Latin-1.
  
          .. versionchanged:: 0.5.0
              Invalid ``\\uXXXX`` escape sequences will now cause an
              `InvalidUEscapeError` to be raised
  
          :param fp: the file from which to read the ``.properties`` document
          :type fp: file-like object
          :rtype: PropertiesFile
          :raises InvalidUEscapeError: if an invalid ``\\uXXXX`` escape sequence
              occurs in the input
          """
          obj = cls()
          for i, (k, v, src) in enumerate(parse(fp)):
              if k is not None:
                  obj._indices.setdefault(k, []).append(i)
              obj._lines[i] = PropertyLine(k, v, src)
          return obj