<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_aliases_and_defaults(self, aliases_config=None, default_properties=None):
 """ Set the alias config and defaults to use. Typically used when switching to a collection with a different schema. Args: aliases_config: An alias dict to use. Defaults to None, which means the default aliases defined in "aliases.json" is used. See constructor for format. default_properties: List of property names (strings) to use by default, if no properties are given to the 'properties' argument of query(). """

        if aliases_config is None:
            with open(os.path.join(os.path.dirname(__file__),
                                   "aliases.json")) as f:
                d = json.load(f)
                self.aliases = d.get("aliases", {})
                self.default_criteria = d.get("defaults", {})
        else:
            self.aliases = aliases_config.get("aliases", {})
            self.default_criteria = aliases_config.get("defaults", {})
        # set default properties
        if default_properties is None:
            self._default_props, self._default_prop_dict = None, None
        else:
            self._default_props, self._default_prop_dict = \
                self._parse_properties(default_properties)