class_docstr: Scansion constants can be modified and passed into the constructor if desired.
docstr: Given a list of consonant positions, move the consonants according to certain
  consonant syllable behavioral rules for gathering and grouping.
  
  :param letters:
  :param positions:
  :return:
docstr_tok: ["Given","a","list","of","consonant","positions",",","move","the","consonants","according","to","certain","consonant","syllable","behavioral","rules","for","gathering","and","grouping",".",":","param","letters",":",":","param","positions",":",":","return",":"]
code: def _move_consonant(
      self, letters: list, positions: List[int]
  ) -> List[str]:
      """
      Given a list of consonant positions, move the consonants according to certain
      consonant syllable behavioral rules for gathering and grouping.
  
      :param letters:
      :param positions:
      :return:
      """
      for pos in positions:
          previous_letter = letters[pos - 1]
          consonant = letters[pos]
          next_letter = letters[pos + 1]
          if self._contains_vowels(
              next_letter
          ) and self._starts_with_vowel(next_letter):
              return string_utils.move_consonant_right(letters, [pos])
          if (
              self._contains_vowels(previous_letter)
              and self._ends_with_vowel(previous_letter)
              and len(previous_letter) == 1
          ):
              return string_utils.move_consonant_left(letters, [pos])
          if previous_letter + consonant in self.constants.ASPIRATES:
              return string_utils.move_consonant_left(letters, [pos])
          if consonant + next_letter in self.constants.ASPIRATES:
              return string_utils.move_consonant_right(letters, [pos])
          if next_letter[0] == consonant:
              return string_utils.move_consonant_left(letters, [pos])
          if (
              consonant in self.constants.MUTES
              and next_letter[0] in self.constants.LIQUIDS
          ):
              return string_utils.move_consonant_right(letters, [pos])
          if consonant in ["k", "K"] and next_letter[0] in ["w", "W"]:
              return string_utils.move_consonant_right(letters, [pos])
          if self._contains_consonants(
              next_letter[0]
          ) and self._starts_with_vowel(previous_letter[-1]):
              return string_utils.move_consonant_left(letters, [pos])
          # fall through case
          if self._contains_consonants(next_letter[0]):
              return string_utils.move_consonant_right(letters, [pos])
      return letters
  
imports: import copy
  import logging
  import re
  from typing import List
  import cltk.prosody.lat.string_utils
  from cltk.prosody.lat.scansion_constants import ScansionConstants
label_desc: Use image node_id 14 for calling the Syllabifier obj's underlying member method code with example usage: obj._move_consonant(letters, positions) and returns: letters, string_utils, string_utils, string_utils, string_utils, string_utils, string_utils, string_utils, string_utils, string_utils