def METHOD_NAME(
    self,
    out_dir,
    METHOD_NAME=True,
    check_if_valid=True,
    process_method=None,
    value_map=None,
):
    """
    Save patch.
    @param out_dir: Output directory for saving the patch. Supplied by patch_manager.py
    @param save: If False it will not write to disk. Helpful for debugging.
    @param check_if_valid: Run through checks supplied by manager. If rejected, don't save.
    @param process_method: A method that takes an image as an input and returns a string. Summarizes patch info.
        If left as None, it will use utils.pass_method() and return an empty string.
    @param value_map: Map key values in patch to alternate value. dict(key => value) where key, value are ints.
        alters the patch by substituting key for value in the image, leaves values not in dictionary unaltered.
        Helpful for standardization.
    @return: A list [bool, Patch, summary]. bool is if the patch was accepted, Patch is the patch object, and
        summary is the output of process_method.
    """
    patch = self.read_patch()
    if process_method is None:
        process_method = pass_method
    if check_if_valid:
        for check_function in self.manager.valid_patch_checks:
            if not check_function(patch):
                print("Patch failed check", check_function)
                return [False, self, ""]
    try:
        if METHOD_NAME:
            if isinstance(value_map, dict):
                patch = self.read_patch()[:, :, 0]
                patch = map_values(patch, value_map)
                imsave(fname=self.get_patch_path(out_dir), arr=patch)
            elif value_map is None:
                patch = self.read_patch()
                imsave(fname=self.get_patch_path(out_dir), arr=patch)
        return [True, self, process_method(patch)]
    except Exception as e:
        print("Exception while saving patch:", e)
        return [False, self, ""]