DirectReplacer auto-generates keys from replacement list