docs: def get_search_filter_spec(self, begin_entity, property_spec):
          """Build a PropertyFilterSpec capable of full inventory traversal.
          
          By specifying all valid traversal specs we are creating a PFS that
          can recursively select any object under the given entity.
  
          :param begin_entity: The place in the MOB to start the search.
          :type begin_entity: ManagedEntity
          :param property_spec: TODO
          :type property_spec: TODO
          :returns: A PropertyFilterSpec, suitable for recursively searching \
          under the given ManagedEntity.
          :rtype: PropertyFilterSpec
  
          """
          # The selection spec for additional objects we want to filter
          ss_strings = ['resource_pool_traversal_spec',
                        'resource_pool_vm_traversal_spec',
                        'folder_traversal_spec',
                        'datacenter_host_traversal_spec',
                        'datacenter_vm_traversal_spec',
                        'compute_resource_rp_traversal_spec',
                        'compute_resource_host_traversal_spec',
                        'host_vm_traversal_spec',
                        'datacenter_datastore_traversal_spec']
  
          # Create a selection spec for each of the strings specified above
          selection_specs = [
              self.create('SelectionSpec', name=ss_string)
              for ss_string in ss_strings
          ]
  
          # A traversal spec for deriving ResourcePool's from found VMs
          rpts = self.create('TraversalSpec')
          rpts.name = 'resource_pool_traversal_spec'
          rpts.type = 'ResourcePool'
          rpts.path = 'resourcePool'
          rpts.selectSet = [selection_specs[0], selection_specs[1]]
  
          # A traversal spec for deriving ResourcePool's from found VMs
          rpvts = self.create('TraversalSpec')
          rpvts.name = 'resource_pool_vm_traversal_spec'
          rpvts.type = 'ResourcePool'
          rpvts.path = 'vm'
  
          crrts = self.create('TraversalSpec')
          crrts.name = 'compute_resource_rp_traversal_spec'
          crrts.type = 'ComputeResource'
          crrts.path = 'resourcePool'
          crrts.selectSet = [selection_specs[0], selection_specs[1]]
  
          crhts = self.create('TraversalSpec')
          crhts.name = 'compute_resource_host_traversal_spec'
          crhts.type = 'ComputeResource'
          crhts.path = 'host'
           
          dhts = self.create('TraversalSpec')
          dhts.name = 'datacenter_host_traversal_spec'
          dhts.type = 'Datacenter'
          dhts.path = 'hostFolder'
          dhts.selectSet = [selection_specs[2]]
  
          dsts = self.create('TraversalSpec')
          dsts.name = 'datacenter_datastore_traversal_spec'
          dsts.type = 'Datacenter'
          dsts.path = 'datastoreFolder'
          dsts.selectSet = [selection_specs[2]]
  
          dvts = self.create('TraversalSpec')
          dvts.name = 'datacenter_vm_traversal_spec'
          dvts.type = 'Datacenter'
          dvts.path = 'vmFolder'
          dvts.selectSet = [selection_specs[2]]
  
          hvts = self.create('TraversalSpec')
          hvts.name = 'host_vm_traversal_spec'
          hvts.type = 'HostSystem'
          hvts.path = 'vm'
          hvts.selectSet = [selection_specs[2]]
        
          fts = self.create('TraversalSpec')
          fts.name = 'folder_traversal_spec'
          fts.type = 'Folder'
          fts.path = 'childEntity'
          fts.selectSet = [selection_specs[2], selection_specs[3],
                            selection_specs[4], selection_specs[5],
                            selection_specs[6], selection_specs[7],
                            selection_specs[1], selection_specs[8]]
  
          obj_spec = self.create('ObjectSpec')
          obj_spec.obj = begin_entity
          obj_spec.selectSet = [fts, dvts, dhts, crhts, crrts,
                                 rpts, hvts, rpvts, dsts]
  
          pfs = self.create('PropertyFilterSpec')
          pfs.propSet = [property_spec]
          pfs.objectSet = [obj_spec]
          return pfs