diff --git a/stix2/datastore/filesystem.py b/stix2/datastore/filesystem.py
index e8442e6..d5acc24 100644
--- a/stix2/datastore/filesystem.py
+++ b/stix2/datastore/filesystem.py
@@ -15,7 +15,7 @@ from stix2.datastore import (
     DataSink, DataSource, DataSourceError, DataStoreMixin,
 )
 from stix2.datastore.filters import Filter, FilterSet, apply_common_filters
-from stix2.utils import format_datetime, get_type_from_id, is_marking
+from stix2.utils import format_datetime, get_type_from_id
 
 
 def _timestamp2filename(timestamp):
@@ -329,11 +329,50 @@ def _check_object_from_file(query, filepath, allow_custom, version, encoding):
     return result
 
 
+def _is_versioned_type_dir(type_path, type_name):
+    """
+    Try to detect whether the given directory is for a versioned type of STIX
+    object.  This is done by looking for a directory whose name is a STIX ID
+    of the appropriate type.  If found, treat this type as versioned.  This
+    doesn't work when a versioned type directory is empty (it will be
+    mis-classified as unversioned), but this detection is only necessary when
+    reading/querying data.  If a directory is empty, you'll get no results
+    either way.
+
+    Args:
+        type_path: A path to a directory containing one type of STIX object.
+        type_name: The STIX type name.
+
+    Returns:
+        True if the directory looks like it contains versioned objects; False
+        if not.
+
+    Raises:
+        OSError: If there are errors accessing directory contents or stat()'ing
+            files
+    """
+    id_regex = re.compile(
+        r"^" + re.escape(type_name) +
+        r"--[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}"
+        r"-[0-9a-f]{12}$",
+        re.I,
+    )
+
+    for entry in os.listdir(type_path):
+        s = os.stat(os.path.join(type_path, entry))
+        if stat.S_ISDIR(s.st_mode) and id_regex.match(entry):
+            is_versioned = True
+            break
+    else:
+        is_versioned = False
+
+    return is_versioned
+
+
 def _search_versioned(query, type_path, auth_ids, allow_custom, version, encoding):
     """
     Searches the given directory, which contains data for STIX objects of a
-    particular versioned type (i.e. not markings), and return any which match
-    the query.
+    particular versioned type, and return any which match the query.
 
     Args:
         query: The query to match against
@@ -390,36 +429,24 @@ def _search_versioned(query, type_path, auth_ids, allow_custom, version, encodin
 
     # For backward-compatibility, also search for plain files named after
     # object IDs, in the type directory.
-    id_files = _get_matching_dir_entries(
-        type_path, auth_ids, stat.S_ISREG,
-        ".json",
+    backcompat_results = _search_unversioned(
+        query, type_path, auth_ids, allow_custom, version, encoding,
     )
-    for id_file in id_files:
-        id_path = os.path.join(type_path, id_file)
-
-        try:
-            stix_obj = _check_object_from_file(
-                query, id_path, allow_custom,
-                version, encoding,
-            )
-            if stix_obj:
-                results.append(stix_obj)
-        except IOError as e:
-            if e.errno != errno.ENOENT:
-                raise
-            # else, file-not-found is ok, just skip
+    results.extend(backcompat_results)
 
     return results
 
 
-def _search_markings(query, markings_path, auth_ids, allow_custom, version, encoding):
+def _search_unversioned(
+    query, type_path, auth_ids, allow_custom, version, encoding,
+):
     """
-    Searches the given directory, which contains markings data, and return any
-    which match the query.
+    Searches the given directory, which contains unversioned data, and return
+    any objects which match the query.
 
     Args:
         query: The query to match against
-        markings_path: The directory with STIX markings files
+        type_path: The directory with STIX files of unversioned type
         auth_ids: Search optimization based on object ID
         allow_custom (bool): Whether to allow custom properties as well unknown
             custom objects.
@@ -441,11 +468,11 @@ def _search_markings(query, markings_path, auth_ids, allow_custom, version, enco
     """
     results = []
     id_files = _get_matching_dir_entries(
-        markings_path, auth_ids, stat.S_ISREG,
+        type_path, auth_ids, stat.S_ISREG,
         ".json",
     )
     for id_file in id_files:
-        id_path = os.path.join(markings_path, id_file)
+        id_path = os.path.join(type_path, id_file)
 
         try:
             stix_obj = _check_object_from_file(
@@ -530,12 +557,14 @@ class FileSystemSink(DataSink):
         """Write the given STIX object to a file in the STIX file directory.
         """
         type_dir = os.path.join(self._stix_dir, stix_obj["type"])
-        if is_marking(stix_obj):
-            filename = stix_obj["id"]
-            obj_dir = type_dir
-        else:
+
+        # All versioned objects should have a "modified" property.
+        if "modified" in stix_obj:
             filename = _timestamp2filename(stix_obj["modified"])
             obj_dir = os.path.join(type_dir, stix_obj["id"])
+        else:
+            filename = stix_obj["id"]
+            obj_dir = type_dir
 
         file_path = os.path.join(obj_dir, filename + ".json")
 
@@ -649,12 +678,14 @@ class FileSystemSource(DataSource):
         all_data = self.all_versions(stix_id, version=version, _composite_filters=_composite_filters)
 
         if all_data:
-            if is_marking(stix_id):
-                # Markings are unversioned; there shouldn't be more than one
-                # result.
-                stix_obj = all_data[0]
-            else:
+            # Simple check for a versioned STIX type: see if the objects have a
+            # "modified" property.  (Need only check one, since they are all of
+            # the same type.)
+            is_versioned = "modified" in all_data[0]
+            if is_versioned:
                 stix_obj = sorted(all_data, key=lambda k: k['modified'])[-1]
+            else:
+                stix_obj = all_data[0]
         else:
             stix_obj = None
 
@@ -720,14 +751,15 @@ class FileSystemSource(DataSource):
         )
         for type_dir in type_dirs:
             type_path = os.path.join(self._stix_dir, type_dir)
-            if type_dir == "marking-definition":
-                type_results = _search_markings(
+            type_is_versioned = _is_versioned_type_dir(type_path, type_dir)
+            if type_is_versioned:
+                type_results = _search_versioned(
                     query, type_path, auth_ids,
                     self.allow_custom, version,
                     self.encoding,
                 )
             else:
-                type_results = _search_versioned(
+                type_results = _search_unversioned(
                     query, type_path, auth_ids,
                     self.allow_custom, version,
                     self.encoding,

Adding SCO to FileSystemStore results in error
Below an example of how to trigger the problem:

``` python
from stix2.v21 import observables
from stix2 import FileSystemStore

fs_store = FileSystemStore("/test_dir")

file_observable = observables.File(
    name="example.exe",
    size=68 * 1000,
    magic_number_hex="50000000",
    hashes={
        "SHA-256": "841a8921140aba50671ebb0770fecc4ee308c4952cfeff8de154ab14eeef4649"
    }
)

fs_store.add(file_observable)
```

I obtained the following error:

```
Traceback (most recent call last):
  File "C:/Users/user-1/home/example_project/fs_store.py", line 98, in <module>
    example()
  File "C:/Users/user-1/home/example_project/fs_store.py", line 94, in example
    fs_store.add(file_observable)
  File "C:\Users\user-1\venv\lib\site-packages\stix2\datastore\__init__.py", line 216, in add
    return self.sink.add(*args, **kwargs)
  File "C:\Users\user-1\venv\lib\site-packages\stix2\datastore\filesystem.py", line 576, in add
    self._check_path_and_write(stix_data)
  File "C:\Users\user-1\venv\lib\site-packages\stix2\datastore\filesystem.py", line 528, in _check_path_and_write
    filename = _timestamp2filename(stix_obj["modified"])
  File "C:\Users\user-1\venv\lib\site-packages\stix2\base.py", line 195, in __getitem__
    return self._inner[key]
KeyError: 'modified'
```
diff --git a/stix2/test/v21/stix2_data/directory/directory--572827aa-e0cd-44fd-afd5-a717a7585f39.json b/stix2/test/v21/stix2_data/directory/directory--572827aa-e0cd-44fd-afd5-a717a7585f39.json
new file mode 100644
index 0000000..3812ed4
--- /dev/null
+++ b/stix2/test/v21/stix2_data/directory/directory--572827aa-e0cd-44fd-afd5-a717a7585f39.json
@@ -0,0 +1,11 @@
+{
+    "ctime": "2020-10-06T01:54:32.000Z",
+    "contains_refs": [
+        "directory--80539e31-85f3-4304-bd14-e2e8c10859a5",
+        "file--e9e03175-0357-41b5-a2aa-eb99b455cd0c",
+        "directory--f6c54233-027b-4464-8126-da1324d8f66c"
+    ],
+    "path": "/performance/Democrat.gif",
+    "type": "directory",
+    "id": "directory--572827aa-e0cd-44fd-afd5-a717a7585f39"
+}
diff --git a/stix2/test/v21/test_datastore_filesystem.py b/stix2/test/v21/test_datastore_filesystem.py
index 9917ccd..3eb8aaa 100644
--- a/stix2/test/v21/test_datastore_filesystem.py
+++ b/stix2/test/v21/test_datastore_filesystem.py
@@ -221,6 +221,16 @@ def test_filesystem_source_backward_compatible(fs_source):
     assert result.malware_types == ["version four"]
 
 
+def test_filesystem_source_sco(fs_source):
+    results = fs_source.query([stix2.Filter("type", "=", "directory")])
+
+    assert len(results) == 1
+    result = results[0]
+    assert result["type"] == "directory"
+    assert result["id"] == "directory--572827aa-e0cd-44fd-afd5-a717a7585f39"
+    assert result["path"] == "/performance/Democrat.gif"
+
+
 def test_filesystem_sink_add_python_stix_object(fs_sink, fs_source):
     # add python stix object
     camp1 = stix2.v21.Campaign(
@@ -435,6 +445,24 @@ def test_filesystem_sink_marking(fs_sink):
     os.remove(marking_filepath)
 
 
+def test_filesystem_sink_sco(fs_sink):
+    file_sco = {
+        "type": "file",
+        "id": "file--decfcc48-31b3-45f5-87c8-1b3a5d71a307",
+        "name": "cats.png",
+    }
+
+    fs_sink.add(file_sco)
+    sco_filepath = os.path.join(
+        FS_PATH, "file", file_sco["id"] + ".json",
+    )
+
+    assert os.path.exists(sco_filepath)
+
+    os.remove(sco_filepath)
+    os.rmdir(os.path.dirname(sco_filepath))
+
+
 def test_filesystem_store_get_stored_as_bundle(fs_store):
     coa = fs_store.get("course-of-action--95ddb356-7ba0-4bd9-a889-247262b8946f")
     assert coa.id == "course-of-action--95ddb356-7ba0-4bd9-a889-247262b8946f"
@@ -473,9 +501,10 @@ def test_filesystem_store_query_single_filter(fs_store):
 
 def test_filesystem_store_empty_query(fs_store):
     results = fs_store.query()  # returns all
-    assert len(results) == 30
+    assert len(results) == 31
     assert "tool--242f3da3-4425-4d11-8f5c-b842886da966" in [obj.id for obj in results]
     assert "marking-definition--fa42a846-8d90-4e51-bc29-71d5b4802168" in [obj.id for obj in results]
+    assert "directory--572827aa-e0cd-44fd-afd5-a717a7585f39" in [obj.id for obj in results]
 
 
 def test_filesystem_store_query_multiple_filters(fs_store):
@@ -487,7 +516,7 @@ def test_filesystem_store_query_multiple_filters(fs_store):
 
 def test_filesystem_store_query_dont_include_type_folder(fs_store):
     results = fs_store.query(stix2.Filter("type", "!=", "tool"))
-    assert len(results) == 28
+    assert len(results) == 29
 
 
 def test_filesystem_store_add(fs_store):
@@ -574,6 +603,26 @@ def test_filesystem_store_add_marking(fs_store):
     os.remove(marking_filepath)
 
 
+def test_filesystem_store_add_sco(fs_store):
+    sco = stix2.v21.EmailAddress(
+        value="jdoe@example.com",
+    )
+
+    fs_store.add(sco)
+    sco_filepath = os.path.join(
+        FS_PATH, "email-addr", sco["id"] + ".json",
+    )
+
+    assert os.path.exists(sco_filepath)
+
+    sco_r = fs_store.get(sco["id"])
+    assert sco_r["id"] == sco["id"]
+    assert sco_r["value"] == sco["value"]
+
+    os.remove(sco_filepath)
+    os.rmdir(os.path.dirname(sco_filepath))
+
+
 def test_filesystem_object_with_custom_property(fs_store):
     camp = stix2.v21.Campaign(
         name="Scipio Africanus",
@@ -1024,6 +1073,7 @@ def test_search_auth_set_black_empty(rel_fs_store):
         "attack-pattern",
         "campaign",
         "course-of-action",
+        "directory",
         "identity",
         "indicator",
         "intrusion-set",

pip install -e .[taxii,semantic]
parse_log_pytest
requirements.txt
pytest pytest-cov coverage
3.7
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
antlr4-python3-runtime==4.9.3
attrs==24.2.0
Babel==2.14.0
backcall==0.2.0
beautifulsoup4==4.13.3
bleach==6.0.0
bump2version==1.0.1
bumpversion==0.6.0
cachetools==5.5.2
certifi @ file:///croot/certifi_1671487769961/work/certifi
cfgv==3.3.1
chardet==5.2.0
charset-normalizer==3.4.1
colorama==0.4.6
coverage==7.2.7
decorator==5.1.1
defusedxml==0.7.1
distlib==0.3.9
docutils==0.17.1
entrypoints==0.4
exceptiongroup==1.2.2
fastjsonschema==2.21.1
filelock==3.12.2
fuzzywuzzy==0.18.0
haversine==2.9.0
identify==2.5.24
idna==3.10
imagesize==1.4.1
importlib-metadata==6.7.0
importlib-resources==5.12.0
iniconfig==2.0.0
ipython==7.34.0
jedi==0.19.2
Jinja2==3.1.6
jsonschema==4.17.3
jupyter_client==7.4.9
jupyter_core==4.12.0
jupyterlab-pygments==0.2.2
MarkupSafe==2.1.5
matplotlib-inline==0.1.6
mistune==3.0.2
nbclient==0.7.4
nbconvert==7.6.0
nbformat==5.8.0
nbsphinx==0.4.3
nest-asyncio==1.6.0
nodeenv==1.9.1
packaging==24.0
pandocfilters==1.5.1
parso==0.8.4
pexpect==4.9.0
pickleshare==0.7.5
pkgutil_resolve_name==1.3.10
platformdirs==4.0.0
pluggy==1.2.0
pre-commit==2.21.0
prompt_toolkit==3.0.48
ptyprocess==0.7.0
Pygments==2.17.2
pyproject-api==1.5.3
pyrsistent==0.19.3
pytest==7.4.4
pytest-cov==4.1.0
python-dateutil==2.9.0.post0
pytz==2025.2
PyYAML==6.0.1
pyzmq==26.2.1
requests==2.31.0
simplejson==3.20.1
six==1.17.0
snowballstemmer==2.2.0
soupsieve==2.4.1
Sphinx==1.8.6
sphinx-prompt==1.5.0
sphinxcontrib-serializinghtml==1.1.5
sphinxcontrib-websupport==1.2.4
-e git+https://github.com/oasis-open/cti-python-stix2.git@8aca39a0b037647f055ad11c85e0f289835f9f3d#egg=stix2
stix2-patterns==2.0.0
taxii2-client==2.3.0
tinycss2==1.2.1
tomli==2.0.1
tornado==6.2
tox==4.8.0
traitlets==5.9.0
typing_extensions==4.7.1
urllib3==2.0.7
virtualenv==20.26.6
wcwidth==0.2.13
webencodings==0.5.1
zipp==3.15.0

name: cti-python-stix2
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - antlr4-python3-runtime==4.9.3
      - attrs==24.2.0
      - babel==2.14.0
      - backcall==0.2.0
      - beautifulsoup4==4.13.3
      - bleach==6.0.0
      - bump2version==1.0.1
      - bumpversion==0.6.0
      - cachetools==5.5.2
      - cfgv==3.3.1
      - chardet==5.2.0
      - charset-normalizer==3.4.1
      - colorama==0.4.6
      - coverage==7.2.7
      - decorator==5.1.1
      - defusedxml==0.7.1
      - distlib==0.3.9
      - docutils==0.17.1
      - entrypoints==0.4
      - exceptiongroup==1.2.2
      - fastjsonschema==2.21.1
      - filelock==3.12.2
      - fuzzywuzzy==0.18.0
      - haversine==2.9.0
      - identify==2.5.24
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==6.7.0
      - importlib-resources==5.12.0
      - iniconfig==2.0.0
      - ipython==7.34.0
      - jedi==0.19.2
      - jinja2==3.1.6
      - jsonschema==4.17.3
      - jupyter-client==7.4.9
      - jupyter-core==4.12.0
      - jupyterlab-pygments==0.2.2
      - markupsafe==2.1.5
      - matplotlib-inline==0.1.6
      - mistune==3.0.2
      - nbclient==0.7.4
      - nbconvert==7.6.0
      - nbformat==5.8.0
      - nbsphinx==0.4.3
      - nest-asyncio==1.6.0
      - nodeenv==1.9.1
      - packaging==24.0
      - pandocfilters==1.5.1
      - parso==0.8.4
      - pexpect==4.9.0
      - pickleshare==0.7.5
      - pkgutil-resolve-name==1.3.10
      - platformdirs==4.0.0
      - pluggy==1.2.0
      - pre-commit==2.21.0
      - prompt-toolkit==3.0.48
      - ptyprocess==0.7.0
      - pygments==2.17.2
      - pyproject-api==1.5.3
      - pyrsistent==0.19.3
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - pyyaml==6.0.1
      - pyzmq==26.2.1
      - requests==2.31.0
      - simplejson==3.20.1
      - six==1.17.0
      - snowballstemmer==2.2.0
      - soupsieve==2.4.1
      - sphinx==1.8.6
      - sphinx-prompt==1.5.0
      - sphinxcontrib-serializinghtml==1.1.5
      - sphinxcontrib-websupport==1.2.4
      - stix2-patterns==2.0.0
      - taxii2-client==2.3.0
      - tinycss2==1.2.1
      - tomli==2.0.1
      - tornado==6.2
      - tox==4.8.0
      - traitlets==5.9.0
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - virtualenv==20.26.6
      - wcwidth==0.2.13
      - webencodings==0.5.1
      - zipp==3.15.0
prefix: /opt/conda/envs/cti-python-stix2

stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_sco stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_sco
stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_nonexistent_folder stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_nonexistent_folder stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_bad_json_file stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_bad_stix_file stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_get_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_get_nonexistent_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_all_versions stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_query_single stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_query_multiple stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_backward_compatible stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_sco stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_python_stix_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_stix_object_dict stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_stix_bundle_dict stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_json_stix_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_json_stix_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_objects_list stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_marking stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_get_stored_as_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_get_stored_as_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_all_versions stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query_single_filter stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_empty_query stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query_multiple_filters stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query_dont_include_type_folder stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_as_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_add_bundle_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_invalid_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_marking stix2/test/v21/test_datastore_filesystem.py::test_filesystem_object_with_custom_property stix2/test/v21/test_datastore_filesystem.py::test_filesystem_object_with_custom_property_in_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_custom_object stix2/test/v21/test_datastore_filesystem.py::test_relationships stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_type stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_source stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_target stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_target_and_type stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_target_and_source stix2/test/v21/test_datastore_filesystem.py::test_related_to stix2/test/v21/test_datastore_filesystem.py::test_related_to_by_source stix2/test/v21/test_datastore_filesystem.py::test_related_to_by_target stix2/test/v21/test_datastore_filesystem.py::test_auth_set_white1 stix2/test/v21/test_datastore_filesystem.py::test_auth_set_white2 stix2/test/v21/test_datastore_filesystem.py::test_auth_set_white3 stix2/test/v21/test_datastore_filesystem.py::test_auth_set_black1 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types1 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types2 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types3 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types4 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types5 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types6 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types7 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types8 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids1 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids2 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids3 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids4 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids5 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids6 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white1 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white2 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white3 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_black1 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white_empty stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_black_empty stix2/test/v21/test_datastore_filesystem.py::test_timestamp2filename_naive stix2/test/v21/test_datastore_filesystem.py::test_timestamp2filename_tz
stix2/datastore/filesystem.py
stix2/datastore/filesystem.py