# File lib/chef/provider/link.rb, line 89
      def action_create
        if @current_resource.to != canonicalize(@new_resource.to) ||
           @current_resource.link_type != @new_resource.link_type
          if @current_resource.to # nil if target_file does not exist
            converge_by("unlink existing file at #{@new_resource.target_file}") do
              ::File.unlink(@new_resource.target_file)
            end
          end
          if @new_resource.link_type == :symbolic
            converge_by("create symlink at #{@new_resource.target_file} to #{@new_resource.to}") do
              file_class.symlink(canonicalize(@new_resource.to),@new_resource.target_file)
              Chef::Log.debug("#{@new_resource} created #{@new_resource.link_type} link from #{@new_resource.to} -> #{@new_resource.target_file}")
              Chef::Log.info("#{@new_resource} created")
            end
          elsif @new_resource.link_type == :hard
            converge_by("create hard link at #{@new_resource.target_file} to #{@new_resource.to}") do
              file_class.link(@new_resource.to, @new_resource.target_file)
              Chef::Log.debug("#{@new_resource} created #{@new_resource.link_type} link from #{@new_resource.to} -> #{@new_resource.target_file}")
              Chef::Log.info("#{@new_resource} created")
            end
          end
        end
        if @new_resource.link_type == :symbolic
          if access_controls.requires_changes?
            converge_by(access_controls.describe_changes) do 
              access_controls.set_all
            end
          end
       end
      end