nodes: 0, module; 1, function_definition; 2, function_name:dump; 3, parameters; 4, block; 5, identifier:props; 6, identifier:fp; 7, default_parameter; 8, default_parameter; 9, default_parameter; 10, default_parameter; 11, expression_statement; 12, if_statement; 13, if_statement; 14, for_statement; 15, identifier:separator; 16, string; 17, identifier:comments; 18, None; 19, identifier:timestamp; 20, True; 21, identifier:sort_keys; 22, False; 23, comment:"""
      Write a series of key-value pairs to a file in simple line-oriented
      ``.properties`` format.
  
      :param props: A mapping or iterable of ``(key, value)`` pairs to write to
          ``fp``.  All keys and values in ``props`` must be text strings.  If
          ``sort_keys`` is `False`, the entries are output in iteration order.
      :param fp: A file-like object to write the values of ``props`` to.  It must
          have been opened as a text file with a Latin-1-compatible encoding.
      :param separator: The string to use for separating keys & values.  Only
          ``" "``, ``"="``, and ``":"`` (possibly with added whitespace) should
          ever be used as the separator.
      :type separator: text string
      :param comments: if non-`None`, ``comments`` will be written to ``fp`` as a
          comment before any other content
      :type comments: text string or `None`
      :param timestamp: If neither `None` nor `False`, a timestamp in the form of
          ``Mon Sep 02 14:00:54 EDT 2016`` is written as a comment to ``fp``
          after ``comments`` (if any) and before the key-value pairs.  If
          ``timestamp`` is `True`, the current date & time is used.  If it is a
          number, it is converted from seconds since the epoch to local time.  If
          it is a `datetime.datetime` object, its value is used directly, with
          naïve objects assumed to be in the local timezone.
      :type timestamp: `None`, `bool`, number, or `datetime.datetime`
      :param bool sort_keys: if true, the elements of ``props`` are sorted
          lexicographically by key in the output
      :return: `None`
      """; 24, comparison_operator:comments is not None; 25, block; 26, boolean_operator; 27, block; 28, pattern_list; 29, call; 30, block; 31, string_content:=; 32, identifier:comments; 33, None; 34, expression_statement; 35, comparison_operator:timestamp is not None; 36, comparison_operator:timestamp is not False; 37, expression_statement; 38, identifier:k; 39, identifier:v; 40, identifier:itemize; 41, argument_list; 42, expression_statement; 43, call; 44, identifier:timestamp; 45, None; 46, identifier:timestamp; 47, False; 48, call; 49, identifier:props; 50, keyword_argument; 51, call; 52, identifier:print; 53, argument_list; 54, identifier:print; 55, argument_list; 56, identifier:sort_keys; 57, identifier:sort_keys; 58, identifier:print; 59, argument_list; 60, call; 61, keyword_argument; 62, call; 63, keyword_argument; 64, call; 65, keyword_argument; 66, identifier:to_comment; 67, argument_list; 68, identifier:file; 69, identifier:fp; 70, identifier:to_comment; 71, argument_list; 72, identifier:file; 73, identifier:fp; 74, identifier:join_key_value; 75, argument_list; 76, identifier:file; 77, identifier:fp; 78, identifier:comments; 79, call; 80, identifier:k; 81, identifier:v; 82, identifier:separator; 83, identifier:java_timestamp; 84, argument_list; 85, identifier:timestamp
code: def dump(props, fp, separator='=', comments=None, timestamp=True,
           sort_keys=False):
      """
      Write a series of key-value pairs to a file in simple line-oriented
      ``.properties`` format.
  
      :param props: A mapping or iterable of ``(key, value)`` pairs to write to
          ``fp``.  All keys and values in ``props`` must be text strings.  If
          ``sort_keys`` is `False`, the entries are output in iteration order.
      :param fp: A file-like object to write the values of ``props`` to.  It must
          have been opened as a text file with a Latin-1-compatible encoding.
      :param separator: The string to use for separating keys & values.  Only
          ``" "``, ``"="``, and ``":"`` (possibly with added whitespace) should
          ever be used as the separator.
      :type separator: text string
      :param comments: if non-`None`, ``comments`` will be written to ``fp`` as a
          comment before any other content
      :type comments: text string or `None`
      :param timestamp: If neither `None` nor `False`, a timestamp in the form of
          ``Mon Sep 02 14:00:54 EDT 2016`` is written as a comment to ``fp``
          after ``comments`` (if any) and before the key-value pairs.  If
          ``timestamp`` is `True`, the current date & time is used.  If it is a
          number, it is converted from seconds since the epoch to local time.  If
          it is a `datetime.datetime` object, its value is used directly, with
          naïve objects assumed to be in the local timezone.
      :type timestamp: `None`, `bool`, number, or `datetime.datetime`
      :param bool sort_keys: if true, the elements of ``props`` are sorted
          lexicographically by key in the output
      :return: `None`
      """
      if comments is not None:
          print(to_comment(comments), file=fp)
      if timestamp is not None and timestamp is not False:
          print(to_comment(java_timestamp(timestamp)), file=fp)
      for k,v in itemize(props, sort_keys=sort_keys):
          print(join_key_value(k, v, separator), file=fp)