+{
+ if (_path_cache == 0)
+ _path_cache = new cache_map;
+
+ SGPropertyNode * result = (*_path_cache)[relative_path];
+ if (result == 0) {
+ vector<PathComponent> components;
+ parse_path(relative_path, components);
+ result = find_node(this, components, 0, create);
+ (*_path_cache)[relative_path] = result;
+ }
+
+ return result;
+}
+
+SGPropertyNode *
+SGPropertyNode::getNode (const string &relative_path, int index, bool create)