class FakeFS::Pathname

def cleanpath_conservative

def cleanpath_conservative
  path = @path
  names = []
  pre = path
  while (r = chop_basename(pre))
    pre, base = r
    names.unshift base if base != '.'
  end
  if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
    names.shift while names[0] == '..'
  end
  if names.empty?
    self.class.new(File.dirname(pre))
  else
    names << '.' if names.last != '..' && File.basename(path) == '.'
    result = prepend_prefix(pre, File.join(*names))
    if /\A(?:\.|\.\.)\z/ !~ names.last && trailing_separator?(path)
      self.class.new(add_trailing_separator(result))
    else
      self.class.new(result)
    end
  end
end