# File lib/chef/provider/template.rb, line 49
      def action_create
        render_with_context(template_location) do |rendered_template|
          rendered(rendered_template)
          update = ::File.exist?(@new_resource.path)
          if update && content_matches?
            Chef::Log.debug("#{@new_resource} content has not changed.")
            set_all_access_controls
          else
            description = [] 
            action_message = update ? "update #{@current_resource} from #{short_cksum(@current_resource.checksum)} to #{short_cksum(@new_resource.checksum)}" :
              "create #{@new_resource}"
            description << action_message
            description << diff_current(rendered_template.path)
            converge_by(description) do
              backup
              FileUtils.cp(rendered_template.path, @new_resource.path)
              Chef::Log.info("#{@new_resource} updated content")
              access_controls.set_all!
              stat = ::File.stat(@new_resource.path)

              # template depends on the checksum not changing, and updates it
              # itself later in the code, so we cannot set it here, as we do with
              # all other < File child provider classes
              @new_resource.owner(stat.uid)
              @new_resource.mode(stat.mode & 07777)
              @new_resource.group(stat.gid)
            end
          end
        end  
      end