    # 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