hunk.code_window:     const startNode = node.getDescendant(startKey)
       if (range.isAtStartOf(startNode)) {
         const previous = node.getPreviousText(startNode)
         range = range.extendToEndOf(previous)
         range = range.normalize(node)
         return node.deleteAtRange(range)
  
hunk.labels: keep keep keep add keep keep keep
hunk.after_edit:       // If the previous descendant is void, remove it.
         const prevBlock = node.getClosestBlock(previous)
         if (prevBlock && prevBlock.isVoid) return node.removeDescendant(prevBlock)
         const prevInline = node.getClosestInline(previous)
         if (prevInline && prevInline.isVoid) return node.removeDescendant(prevInline)
  
hunk.file_path: lib/models/transforms.js
hunk.type: add
file: 
  # `Character`
  
  ```js
  import { Character } from 'slate'
  ```
  
  A character in a [`Text`](./text.md) node.
  
  Characters are how Slate associates [`Marks`](./mark.md) with a range of text, for formatting.
  
  - [Properties](#properties)
    - [`marks`](#marks)
    - [`text`](#text)
  - [Static Methods](#static-methods)
    - [`Character.create`](#character-create)
    - [`Character.createList`](#character-createlist)
  
  
  ## Properties
  
  ```js
  Character({
    marks: Immutable.Set<Mark>,
    text: String
  })
  ```
  
  ### `marks`
  `Immutable.Set`
  
  A set of [`Marks`](./mark.md) attached to the character.
  
  ### `text`
  `String`
  
  The text string of the character.
  
  
  ## Static Methods
  
  ### `Character.create`
  `Character.create(properties: Object) => Character`
  
  Create a character from a plain Javascript object of `properties`.
  
  ### `Character.createList`
  `Character.createList(array: Array) => List`
  
  Create a list of characters from a plain Javascript `array`.
  