code: def subst_path(self, path, target=None, source=None):
          
  
          if not SCons.Util.is_List(path):
              path = [path]
  
          def s(obj):
              """This is the "string conversion" routine that we have our
              substitutions use to return Nodes, not strings.  This relies
              on the fact that an EntryProxy object has a get() method that
              returns the underlying Node that it wraps, which is a bit of
              architectural dependence that we might need to break or modify
              in the future in response to additional requirements."""
              try:
                  get = obj.get
              except AttributeError:
                  obj = SCons.Util.to_String_for_subst(obj)
              else:
                  obj = get()
              return obj
  
          r = []
          for p in path:
              if SCons.Util.is_String(p):
                  p = self.subst(p, target=target, source=source, conv=s)
                  if SCons.Util.is_List(p):
                      if len(p) == 1:
                          p = p[0]
                      else:
                          # We have an object plus a string, or multiple
                          # objects that we need to smush together.  No choice
                          # but to make them into a string.
                          p = ''.join(map(SCons.Util.to_String_for_subst, p))
              else:
                  p = s(p)
              r.append(p)
          return r
docs: Substitute a path list, turning EntryProxies into Nodes
          and leaving Nodes (and other objects) as-is.