code: def _get_flow_datastore(self, ds_type, ds_root, flow_name):
      cache_id = self._flow_ds_id(ds_type, ds_root, flow_name)
      cached_flow_datastore = self._store_caches.get(cache_id)
  
      if cached_flow_datastore:
          od_move_to_end(self._store_caches, cache_id)
          return cached_flow_datastore
      else:
          storage_impl = self._get_datastore_storage_impl(ds_type)
          cached_flow_datastore = FlowDataStore(
              flow_name=flow_name,
              environment=None,  # TODO: Add environment here
              storage_impl=storage_impl,
              ds_root=ds_root,
          )
          blob_cache = self._blob_caches.setdefault(
              cache_id, FileBlobCache(self, cache_id)
          )
          cached_flow_datastore.ca_store.set_blob_cache(blob_cache)
          self._store_caches[cache_id] = cached_flow_datastore
          if (
              len(self._store_caches)
              > CLIENT_CACHE_MAX_FLOWDATASTORE_COUNT
          ):
              cache_id_to_remove, _ = self._store_caches.popitem(
                  last=False
              )
              del self._blob_caches[cache_id_to_remove]
          return cached_flow_datastore
  
imports: from __future__ import print_function
  from collections import OrderedDict
  import os
  import sys
  import time
  from tempfile import NamedTemporaryFile
  from hashlib import sha1
  from metaflow.datastore import FlowDataStore
  from metaflow.datastore.content_addressed_store import BlobCache
  from metaflow.exception import MetaflowException
  from metaflow.metaflow_config import CLIENT_CACHE_PATH, CLIENT_CACHE_MAX_SIZE, CLIENT_CACHE_MAX_FLOWDATASTORE_COUNT, CLIENT_CACHE_MAX_TASKDATASTORE_COUNT
  from metaflow.plugins import DATASTORES
label_desc: Use image node_id 22 for calling the FileCache obj's underlying member method code with example usage: obj._get_flow_datastore(ds_type, ds_root, flow_name) and returns: cached_flow_datastore, cached_flow_datastore