code: def strict_deps_for_target(self, target, predicate=None):
      
      if self._native_build_settings.get_strict_deps_value_for_target(target):
        strict_deps = target.strict_dependencies(DependencyContext())
        if predicate:
          filtered_deps = list(filter(predicate, strict_deps))
        else:
          filtered_deps = strict_deps
        deps = [target] + filtered_deps
      else:
        deps = self.context.build_graph.transitive_subgraph_of_addresses(
          [target.address], predicate=predicate)
  
      # Filter out the beginning target depending on whether it matches the predicate.
      # TODO: There should be a cleaner way to do this.
      deps = filter(predicate, deps)
  
      return deps
docs: Get the dependencies of `target` filtered by `predicate`, accounting for 'strict_deps'.
  
      If 'strict_deps' is on, instead of using the transitive closure of dependencies, targets will
      only be able to see their immediate dependencies declared in the BUILD file. The 'strict_deps'
      setting is obtained from the result of `get_compile_settings()`.
  
      NB: This includes the current target in the result.