+ if( map )
+ {
+ // Iterate through container to add all entries.
+ for( ; containerIterator != containerEnd; ++containerIterator )
+ {
+ Property::Value childValue;
+ DeterminePropertyFromNode( ( *containerIterator ).second, childValue, replacer );
+ map->Insert( ( *containerIterator ).first, childValue );
+ }
+ }
+ }
+ else
+ {
+ // We don't have a key, treat container as an array.
+ // Note: We don't check if the node type is array here, as we want to cope with unknowns by creating an array also.
+ // This is the fall-back if no other types could be created.
+ value = Property::Value( Property::ARRAY );
+ Property::Array* array = value.GetArray();
+
+ if( array )
+ {
+ // Iterate through container to add all entries.
+ for( ; containerIterator != containerEnd; ++containerIterator )
+ {
+ Property::Value childValue;
+ DeterminePropertyFromNode( ( *containerIterator ).second, childValue, replacer );
+ array->PushBack( childValue );
+ }
+ }
+ }
+ } // if !done
+ } // if !Disambiguated()
+}