<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_searchlight(self, voxel_fn, pool_size=None):
 """Perform a function at each voxel which is set to True in the user-provided mask. The mask passed to the searchlight function will be further masked by the user-provided searchlight shape. Parameters voxel_fn: function to apply at each voxel Must be `serializeable using pickle <https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled>`_. Parameters subj: list of 4D arrays containing subset of subject data mask: 3D array containing subset of mask data sl_rad: radius, in voxels, of the sphere inscribed in the cube bcast_var: shared data which is broadcast to all processes Returns Value of any pickle-able type Returns ------- A volume which is the same size as the mask, however a number of voxels equal to the searchlight radius has been removed from each border of the volume. This volume contains the values returned from the searchlight function at each voxel which was set to True in the mask, and None elsewhere. """


        extra_block_fn_params = (voxel_fn, self.shape,
                                 self.min_active_voxels_proportion)
        block_fn_result = self.run_block_function(_singlenode_searchlight,
                                                  extra_block_fn_params,
                                                  pool_size)
        return block_fn_result