def METHOD_NAME(directory, rel_path, original):
    """Reload the given file as a PLTP. Also reload its PL, but without modyfing their ID.
        original is a pltp returned by load_pltp or reload_pltp
        Return:
            - (PLTP, []) if the PLTP was loaded successfully
            - (PLTP, warning_list) if the PLTP was loaded with warnings
    """
    try:
        dic, warnings = parse_file(directory, rel_path)
        original_type = get_activity_type_class(original.activity_type)()
        if "type" in dic and original.activity_type != dic["type"]:
            return None, f"Activity type must remain '{original.activity_type}'"
        original.activity_data = {
            **dic, **original_type.install(original),
            "__reload_path": os.path.join(directory.name, rel_path)
        }
        pl_list = list()
        for item in dic['__pl']:
            pl_directory = Directory.objects.get(name=item['directory_name'])
            pl, pl_warnings = load_pl(pl_directory, item['path'])
            if pl is None:
                return None, pl_warnings
            warnings += pl_warnings
            pl_list.append(pl)
        originals = list(original.indexed_pl())
        original.pl.clear()
        done = {pl.id: False for pl in originals}
        for pl in pl_list:
            correspond = list(
                filter(lambda i: i.directory == pl.directory and i.rel_path == pl.rel_path,
                       originals))
            if correspond:
                for c in correspond:
                    if not done[c.id]:
                        c.json = pl.json
                        c.save()
                        logger.info(
                            "PL '" + str(c.id) + " (" + c.name + ")' has been updated.")
                        PLPosition.objects.create(parent=original, pl=c)
                        done[c.id] = True
            else:
                pl.save()
                logger.info("PL '" + str(pl.id) + " (" + pl.name + ")' has been created.")
                PLPosition.objects.create(parent=original, pl=pl)
        original.save()
        logger.info("Activity '" + original.name + "' has been reloaded.")
        return original, [htmlprint.code(warning) for warning in warnings]
    except Exception as e:  # pragma: no cover
        if not settings.DEBUG:
            return None, htmlprint.code(str(e))
        return (None, (htmlprint.code(str(e))
                       + '<br>DEBUG set to True - Showing Traceback :<br>'
                       + htmlprint.html_exc()))