code: func (r *Rar) addTopLevelFolder(sourceArchive, destination string) (string, error) {
  	file, err := os.Open(sourceArchive)
  	if err != nil {
  		return "", fmt.Errorf("opening source archive: %v", err)
  	}
  	defer file.Close()
  
  	rc, err := rardecode.NewReader(file, r.Password)
  	if err != nil {
  		return "", fmt.Errorf("creating archive reader: %v", err)
  	}
  
  	var files []string
  	for {
  		hdr, err := rc.Next()
  		if err == io.EOF {
  			break
  		}
  		if err != nil {
  			return "", fmt.Errorf("scanning tarball's file listing: %v", err)
  		}
  		files = append(files, hdr.Name)
  	}
  
  	if multipleTopLevels(files) {
  		destination = filepath.Join(destination, folderNameFromFileName(sourceArchive))
  	}
  
  	return destination, nil
  }
docs: // addTopLevelFolder scans the files contained inside
  // the tarball named sourceArchive and returns a modified
  // destination if all the files do not share the same
  // top-level folder.