code: func NewMultiDecrypter(decrypters ...Decrypter) MultiDecrypter {
  	m := MultiDecrypter{decrypters: make(map[api.MaybeEncryptedRecord_Algorithm][]Decrypter)}
  	for _, d := range decrypters {
  		if md, ok := d.(MultiDecrypter); ok {
  			for algo, dec := range md.decrypters {
  				m.decrypters[algo] = append(m.decrypters[algo], dec...)
  			}
  		} else if sd, ok := d.(specificDecrypter); ok {
  			m.decrypters[sd.Algorithm()] = append(m.decrypters[sd.Algorithm()], sd)
  		}
  	}
  	return m
  }
docs: // NewMultiDecrypter returns a new MultiDecrypter given multiple Decrypters.  If any of
  // the Decrypters are also MultiDecrypters, they are flattened into a single map, but
  // it does not deduplicate any decrypters.
  // Note that if something is neither a MultiDecrypter nor a specificDecrypter, it is
  // ignored.