code: def _get_sdict(self, env):
          
          sdict = {}
          for bld in self.get_src_builders(env):
              for suf in bld.src_suffixes(env):
                  sdict[suf] = bld
          return sdict
docs: Returns a dictionary mapping all of the source suffixes of all
          src_builders of this Builder to the underlying Builder that
          should be called first.
  
          This dictionary is used for each target specified, so we save a
          lot of extra computation by memoizing it for each construction
          environment.
  
          Note that this is re-computed each time, not cached, because there
          might be changes to one of our source Builders (or one of their
          source Builders, and so on, and so on...) that we can't "see."
  
          The underlying methods we call cache their computed values,
          though, so we hope repeatedly aggregating them into a dictionary
          like this won't be too big a hit.  We may need to look for a
          better way to do this if performance data show this has turned
          into a significant bottleneck.