# File lib/pathname2.rb, line 772
   def clean!
      return self if self.empty?

      if @win
         path = 0.chr * MAXPATH
         if PathCanonicalize(path, self)
            replace(path.split(0.chr).first)
         end
         return self
      end

      final = []

      to_a.each{ |element|
         next if element == "."
         final.push(element)
         if element == ".." && self != ".."
            2.times{ final.pop }
         end
      }

      final = final.join(@sep)
      final = root + final if root != "."
      final = "." if final.empty?
      replace(self.class.new(final))

      self
   end