nodes: 0, module; 1, function_definition; 2, function_name:get_contents_dir; 3, parameters; 4, block; 5, identifier:node; 6, expression_statement; 7, expression_statement; 8, for_statement; 9, return_statement; 10, comment:"""Return content signatures and names of all our children
      separated by new-lines. Ensure that the nodes are sorted."""; 11, assignment; 12, identifier:n; 13, call; 14, block; 15, call; 16, identifier:contents; 17, list; 18, identifier:sorted; 19, argument_list; 20, expression_statement; 21, attribute; 22, argument_list; 23, call; 24, keyword_argument; 25, call; 26, string; 27, identifier:join; 28, identifier:contents; 29, attribute; 30, argument_list; 31, identifier:key; 32, lambda; 33, attribute; 34, argument_list; 35, identifier:node; 36, identifier:children; 37, lambda_parameters; 38, attribute; 39, identifier:contents; 40, identifier:append; 41, binary_operator:'%s %s\n' % (n.get_csig(), n.name); 42, identifier:t; 43, identifier:t; 44, identifier:name; 45, string; 46, tuple; 47, string_content; 48, call; 49, attribute; 50, escape_sequence:\n; 51, attribute; 52, argument_list; 53, identifier:n; 54, identifier:name; 55, identifier:n; 56, identifier:get_csig
code: def get_contents_dir(node):
      """Return content signatures and names of all our children
      separated by new-lines. Ensure that the nodes are sorted."""
      contents = []
      for n in sorted(node.children(), key=lambda t: t.name):
          contents.append('%s %s\n' % (n.get_csig(), n.name))
      return ''.join(contents)