docs: def spellcheckable_and_shadow_contents(contents, block_out_regexes=None):
      """For contents, split into spellcheckable and shadow parts.
  
      :contents: is a list of lines in a file.
  
      The return value is a tuple of (chunks, shadow_contents).
      chunks is a list of _ChunkInfo, each of which contain
      a region of text to be spell-checked. shadow_contents is an array of
      characters and integers. The characters represent nonspellcheckable
      regions and any region which will be subject to spellcheck is denoted
      by a zero in place of that character.
      """
      if not len(contents):
          return ([], [])
  
      comment_system = _comment_system_for_file(contents[0])
  
      # Shadow contents excludes anything in quotes
      chunks = _find_spellcheckable_chunks(contents, comment_system)
      shadow_contents = _shadow_contents_from_chunks(contents,
                                                     chunks,
                                                     block_out_regexes)
  
      return (chunks, shadow_contents)