def METHOD_NAME(self):
    init = self.algorithm_class.__init__
    if init is object.__init__:
        # No explicit constructor to introspect
        pytest.skip()
    # introspect the constructor arguments to find the _model parameters to represent
    init_signature = inspect.signature(init)
    # Consider the constructor parameters excluding 'self'
    parameters = {
        p.name: p.default
        for p in init_signature.parameters.values()
        if p.name != "self" and p.kind != p.VAR_KEYWORD
    }
    nested_algos = {k: v for k, v in parameters.items() if isinstance(v, (BaseAlgorithm, BaseFactory))}
    if len(nested_algos) == 0:
        pytest.skip()
    # If nested algos exists, we check that we get a new instance of the nested object and not the mutable default.
    # If not, we let the test fail, as we should always wrap such paras in a default explicitly.
    new_instance = self.algorithm_class().get_params()
    for k, v in nested_algos.items():
        assert new_instance[k] is not v, "nested algorithm defaults should be wrapped in `default`."