code: def get_contents(self):
          
          try:
              return self._memo['get_contents']
          except KeyError:
              pass
          env = self.get_build_env()
  
          action_list = self.get_action_list()
          all_targets = self.get_all_targets()
          all_sources = self.get_all_sources()
  
          result = bytearray("",'utf-8').join([action.get_contents(all_targets,
                                                                   all_sources,
                                                                   env)
                                               for action in action_list])
  
          self._memo['get_contents'] = result
          return result
docs: Fetch the signature contents.  This is the main reason this
          class exists, so we can compute this once and cache it regardless
          of how many target or source Nodes there are.