node = (splay_tree_node) xmalloc (sizeof (struct splay_tree_node_s));
node = ((splay_tree_node) (*sp->allocate) (sizeof (struct splay_tree_node_s), sp->allocate_data));
splay_tree_insert (sp, key, value)     splay_tree sp;     splay_tree_key key;     splay_tree_value value;{  int comparison = 0;  splay_tree_splay (sp, key);  if (sp->root)    comparison = (*sp->comp)(sp->root->key, key);  if (sp->root && comparison == 0)    {      /* If the root of the tree already has the indicated KEY, just	 replace the value with VALUE.  */      if (sp->delete_value)	(*sp->delete_value)(sp->root->value);      sp->root->value = value;    }   else     {      /* Create a new node, and insert it at the root.  */      splay_tree_node node;            node = (splay_tree_node) xmalloc (sizeof (struct splay_tree_node_s));      node->key = key;      node->value = value;            if (!sp->root)	node->left = node->right = 0;      else if (comparison < 0)	{	  node->left = sp->root;	  node->right = node->left->right;	  node->left->right = 0;	}      else	{	  node->right = sp->root;	  node->left = node->right->left;	  node->right->left = 0;	}    sp->root = node;  }  return sp->root;}