code: def cull_nonmatching_trees(nexson, tree_id, curr_version=None):
      
      if curr_version is None:
          curr_version = detect_nexson_version(nexson)
      if not _is_by_id_hbf(curr_version):
          nexson = convert_nexson_format(nexson, BY_ID_HONEY_BADGERFISH)
  
      nexml_el = get_nexml_el(nexson)
      tree_groups = nexml_el['treesById']
      tree_groups_to_del = []
      for tgi, tree_group in tree_groups.items():
          tbi = tree_group['treeById']
          if tree_id in tbi:
              trees_to_del = [i for i in tbi.keys() if i != tree_id]
              for tid in trees_to_del:
                  tree_group['^ot:treeElementOrder'].remove(tid)
                  del tbi[tid]
          else:
              tree_groups_to_del.append(tgi)
      for tgid in tree_groups_to_del:
          nexml_el['^ot:treesElementOrder'].remove(tgid)
          del tree_groups[tgid]
      return nexson
docs: Modifies `nexson` and returns it in version 1.2.1
      with any tree that does not match the ID removed.
  
      Note that this does not search through the NexSON for
      every node, edge, tree that was deleted. So the resulting
      NexSON may have broken references !