code: def _morph(self):
          
          self.scanner_paths = {}
          if not hasattr(self, '_local'):
              self._local = 0
          if not hasattr(self, 'released_target_info'):
              self.released_target_info = False
  
          self.store_info = 1
          self._func_exists = 4
          self._func_get_contents = 3
  
          # Initialize this Node's decider function to decide_source() because
          # every file is a source file until it has a Builder attached...
          self.changed_since_last_build = 4
  
          # If there was already a Builder set on this entry, then
          # we need to make sure we call the target-decider function,
          # not the source-decider.  Reaching in and doing this by hand
          # is a little bogus.  We'd prefer to handle this by adding
          # an Entry.builder_set() method that disambiguates like the
          # other methods, but that starts running into problems with the
          # fragile way we initialize Dir Nodes with their Mkdir builders,
          # yet still allow them to be overridden by the user.  Since it's
          # not clear right now how to fix that, stick with what works
          # until it becomes clear...
          if self.has_builder():
              self.changed_since_last_build = 5
docs: Turn a file system node into a File object.