def METHOD_NAME(self, thunker=None):
    """
    _json_
    Serialize the file object.  This will convert all Sets() to lists and
    weed out the internal data structures that don't need to be shared.
    """
    fileDict = {"last_event": self["last_event"],
                "first_event": self["first_event"],
                "lfn": self["lfn"],
                "locations": list(self["locations"]),
                "id": self.get("id", None),
                "checksums": self["checksums"],
                "events": self["events"],
                "merged": self["merged"],
                "size": self["size"],
                "runs": [],
                "parents": []}
    for parent in self["parents"]:
        if isinstance(parent, (str, bytes)):
            # Then for some reason, we're passing strings
            # Done specifically for ErrorHandler
            fileDict['parents'].append(parent)
        elif thunker is None:
            continue
        else:
            fileDict["parents"].append(thunker._thunk(parent))
    for run in self["runs"]:
        runDict = {"run_number": run.run,
                   "lumis": run.lumis}
        fileDict["runs"].append(runDict)
    return fileDict