code: def _change_splitlevel(self, ttype, value):
          
  
          # parenthesis increase/decrease a level
          if ttype is T.Punctuation and value == '(':
              return 1
          elif ttype is T.Punctuation and value == ')':
              return -1
          elif ttype not in T.Keyword: # if normal token return
              return 0
  
          # Everything after here is ttype = T.Keyword
          # Also to note, once entered an If statement you are done and basically
          # returning
          unified = value.upper()
  
          # three keywords begin with CREATE, but only one of them is DDL
          # DDL Create though can contain more words such as "or replace"
          if ttype is T.Keyword.DDL and unified.startswith('CREATE'):
              self._is_create = True
              return 0
  
          # can have nested declare inside of being...
          if unified == 'DECLARE' and self._is_create and self._begin_depth == 0:
              self._in_declare = True
              return 1
  
          if unified == 'BEGIN':
              self._begin_depth += 1
              if self._is_create:
                  # FIXME(andi): This makes no sense.
                  return 1
              return 0
  
          # Should this respect a preceding BEGIN?
          # In CASE ... WHEN ... END this results in a split level -1.
          # Would having multiple CASE WHEN END and a Assignment Operator
          # cause the statement to cut off prematurely?
          if unified == 'END':
              self._begin_depth = max(0, self._begin_depth - 1)
              return -1
  
          if (unified in ('IF', 'FOR', 'WHILE')
                  and self._is_create and self._begin_depth > 0):
              return 1
  
          if unified in ('END IF', 'END FOR', 'END WHILE'):
              return -1
  
          # Default
          return 0
docs: Get the new split level (increase, decrease or remain equal)