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

      if @win
         path = 0.chr * MAXPATH
         if PathCanonicalize(path, self)
            return self.class.new(path.split(0.chr).first)
         else
            return self
         end
      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._plus_(final) if root != "."
      final = "." if final.empty?

      self.class.new(final)
   end