parameters: (self, head_index, daughter_trees)
return_statement: return head_index
docstring: A way for subclasses to fix any heads under special conditions
          The default does nothing.
         
          @param headIdx       the index of the proposed head
          @param daughterTrees the array of daughter trees
          @return the new headIndex.
docstring_summary: A way for subclasses to fix any heads under special conditions
          The default does nothing.
docstring_tokens: A way for subclasses to fix any heads under special conditions The default does nothing .
function: def post_operation_fix(self, head_index, daughter_trees):
          '''A way for subclasses to fix any heads under special conditions
          The default does nothing.
         
          @param headIdx       the index of the proposed head
          @param daughterTrees the array of daughter trees
          @return the new headIndex.'''
          if head_index >= 2:
              prev_lab = daughter_trees[head_index-1].get_label()
              if prev_lab == 'CC':
                  new_head_index = head_index - 2
                  t = daughter_trees[new_head_index]
                  while new_head_index >= 0 and t.is_preterminal() and is_punctuation_tag(t.get_label()):
                      new_head_index -= 1
                  if new_head_index >= 0:
                      head_index = new_head_index
          return head_index
function_tokens: def post_operation_fix ( self , head_index , daughter_trees ) : if head_index >= 2 : prev_lab = daughter_trees [ head_index - 1 ] . get_label ( ) if prev_lab == 'CC' : new_head_index = head_index - 2 t = daughter_trees [ new_head_index ] while new_head_index >= 0 and t . is_preterminal ( ) and is_punctuation_tag ( t . get_label ( ) ) : new_head_index -= 1 if new_head_index >= 0 : head_index = new_head_index return head_index