public static TreePath operator +(TreePath left, TreePath right)
{
if (left.Value.Length == 0) return right;
else if (right.Value.Length == 0) return left;
var values = new string[left.Parts.Length + right.Parts.Length];
Array.Copy(left.Parts, values, left.Parts.Length);
Array.Copy(right.Parts, 0, values, left.Parts.Length, right.Parts.Length);
return new TreePath(left.Value + "." + right.Value, values);
}