+ newtree->node = tree->node;
+
+ newtree->left = tree->left;
+ if(newtree->left == LTTV_TREE_NODE) {
+ newtree->l_child.t = lttv_filter_tree_clone(tree->l_child.t);
+ } else if(newtree->left == LTTV_TREE_LEAF) {
+ newtree->l_child.leaf = lttv_simple_expression_new();
+ newtree->l_child.leaf->field = tree->l_child.leaf->field;
+ newtree->l_child.leaf->offset = tree->l_child.leaf->offset;
+ newtree->l_child.leaf->op = tree->l_child.leaf->op;
+ newtree->l_child.leaf->value = g_strconcat(tree->l_child.leaf->value);
+ }
+
+ newtree->right = tree->right;
+ if(newtree->right == LTTV_TREE_NODE) {
+ newtree->r_child.t = lttv_filter_tree_clone(tree->r_child.t);
+ } else if(newtree->right == LTTV_TREE_LEAF) {
+ newtree->r_child.leaf = lttv_simple_expression_new();
+ newtree->r_child.leaf->field = tree->r_child.leaf->field;
+ newtree->r_child.leaf->offset = tree->r_child.leaf->offset;
+ newtree->r_child.leaf->op = tree->r_child.leaf->op;
+ newtree->r_child.leaf->value = g_strconcat(tree->r_child.leaf->value);
+ }
+
+ return newtree;
+