docs: function expand_modified_subtree(node, modified_node)
  {
  	// from the modified style class node
  	Object.keys(modified_node)
  	// for all non-pseudo-classes and non-media-queries
  	.filter(name => !is_pseudo_class(name) && !is_media_query(name) && !is_keyframes(name))
  	// get all non-modifier style class nodes
  	.filter(name => typeof(modified_node[name]) === 'object' && !modified_node[name]._is_a_modifier)
  	// which are also present as non-modifier style classes
  	// in the base style class node
  	.filter(name => typeof(node[name]) === 'object' && !node[name]._is_a_modifier)
  
  	// for each such style class node
  	.forEach(function(name)
  	{
  		// style of the original style class node
  		const style = get_node_style(node[name])
  
  		// pseudo-classes of the original style class node
  		const pseudo_classes_and_media_queries_and_keyframes = get_node_pseudo_classes_and_media_queries_and_keyframes(node[name])
  
  		// mix in the styles
  		modified_node[name] = extend({}, style, pseudo_classes_and_media_queries_and_keyframes, modified_node[name])
  
  		// recurse
  		return expand_modified_subtree(node[name], modified_node[name])
  	})
  }