def METHOD_NAME(self, role="guest", party_id=None):
    if role not in ["guest", "host", "arbiter"]:
        raise ValueError("Role should be one of guest/host/arbiter")
    if party_id is not None:
        if isinstance(party_id, list):
            for _id in party_id:
                if not isinstance(_id, int) or _id <= 0:
                    raise ValueError("party id should be positive integer")
        elif not isinstance(party_id, int) or party_id <= 0:
            raise ValueError("party id should be positive integer")
    if role not in self.__party_instance:
        self.__party_instance[role] = {}
        self.__party_instance[role]["party"] = {}
    party_key = party_id
    if isinstance(party_id, list):
        party_key = "|".join(map(str, party_id))
    if party_key not in self.__party_instance[role]["party"]:
        self.__party_instance[role]["party"][party_key] = None
    if not self.__party_instance[role]["party"][party_key]:
        party_instance = copy.deepcopy(self)
        self.__party_instance[role]["party"][party_key] = party_instance
    return self.__party_instance[role]["party"][party_key]