def get_by_metadata(self, metadata_search_criteria: Union[SearchCriterion, Iterable[SearchCriterion]],
                        load_metadata: bool=True, zone: str=None) -> Sequence[EntityType]:
        """
        Gets entities from iRODS that have metadata that matches the given search criteria.
        :param metadata_search_criteria: the metadata search criteria
        :param load_metadata: whether metadata associated to the entities should be loaded
        :param zone: limit query to specific zone in iRODS
        :return: the matched entities in iRODS
        """