def METHOD_NAME(tmp_path):
    basedir = tmp_path.as_uri()
    # ----------------------------------------------------------------
    experiment = soma.Experiment.create(basedir)
    assert soma.Experiment.exists(basedir)
    assert not soma.Collection.exists(basedir)
    experiment["obs"] = create_and_populate_obs(urljoin(basedir, "obs"))
    ms = experiment.add_new_collection("ms", soma.Collection)
    measurement = ms.add_new_collection("RNA", soma.Measurement)
    assert soma.Measurement.exists(measurement.uri)
    assert not soma.Collection.exists(measurement.uri)
    measurement["var"] = create_and_populate_var(urljoin(measurement.uri, "var"))
    x = measurement.add_new_collection("X")
    nda = create_and_populate_sparse_nd_array(urljoin(x.uri, "data"))
    x.set("data", nda, use_relative_uri=False)
    # ----------------------------------------------------------------
    assert len(experiment) == 2
    assert isinstance(experiment.obs, soma.DataFrame)
    assert isinstance(experiment.ms, soma.Collection)
    assert "obs" in experiment
    assert "ms" in experiment
    assert "nonesuch" not in experiment
    assert experiment.obs == experiment["obs"]
    assert experiment.ms == experiment["ms"]
    assert len(experiment.ms) == 1
    assert isinstance(experiment.ms["RNA"], soma.Measurement)
    assert len(experiment.ms["RNA"]) == 2
    assert "RNA" in experiment.ms
    assert "meas2" not in experiment.ms
    assert isinstance(experiment.ms["RNA"].var, soma.DataFrame)
    assert isinstance(experiment.ms["RNA"].X, soma.Collection)
    assert experiment.ms["RNA"].var == experiment["ms"]["RNA"]["var"]
    assert experiment.ms["RNA"].X == experiment["ms"]["RNA"]["X"]
    assert len(experiment.ms["RNA"].X) == 1
    assert "data" in experiment.ms["RNA"].X
    assert "nonesuch" not in experiment.ms["RNA"].X
    assert isinstance(experiment.ms["RNA"].X["data"], soma.SparseNDArray)
    # >>> experiment.ms.RNA.X.data._tiledb_open().df[:]
    #    __dim_0  __dim_1  data
    # 0        0        2     7
    # 1        3        1     8
    # 2        4        2     9
    # ----------------------------------------------------------------
    # Paths exist and are of the right type
    assert experiment is not None
    assert experiment.obs is not None
    assert experiment.ms is not None
    assert experiment.ms["RNA"] is not None
    assert experiment.ms["RNA"].X is not None
    assert experiment.ms["RNA"].X["data"] is not None
    # Paths exist but are not of the right type
    # TODO: Restore once type verification is back
    # assert not soma.DataFrame(experiment.uri).exists()
    # assert not soma.Collection(experiment.obs.uri).exists()
    # Paths do not exist
    with pytest.raises(soma.DoesNotExistError):
        soma.Experiment.open("/nonesuch/no/nope/nope/never")
    with pytest.raises(soma.DoesNotExistError):
        soma.DataFrame.open("/nonesuch/no/nope/nope/never")
    # ----------------------------------------------------------------
    # TODO: check more things