nodes: 0, module; 1, function_definition; 2, function_name:insert; 3, parameters; 4, block; 5, identifier:self; 6, identifier:key; 7, identifier:value; 8, expression_statement; 9, expression_statement; 10, expression_statement; 11, expression_statement; 12, comment:"""Insert a key-value pair in the list.
  
          The pair is inserted at the correct location so that the list remains
          sorted on *key*. If a pair with the same key is already in the list,
          then the pair is appended after all other pairs with that key.
          """; 13, call; 14, assignment; 15, call; 16, attribute; 17, argument_list; 18, identifier:node; 19, call; 20, attribute; 21, argument_list; 22, identifier:self; 23, identifier:_find_lte; 24, identifier:key; 25, attribute; 26, argument_list; 27, identifier:self; 28, identifier:_insert; 29, identifier:node; 30, identifier:self; 31, identifier:_create_node; 32, identifier:key; 33, identifier:value
code: def insert(self, key, value):
          """Insert a key-value pair in the list.
  
          The pair is inserted at the correct location so that the list remains
          sorted on *key*. If a pair with the same key is already in the list,
          then the pair is appended after all other pairs with that key.
          """
          self._find_lte(key)
          node = self._create_node(key, value)
          self._insert(node)