in csharp/NativeUtils/ResourceLoaderUtils.cs [155:192]
internal void Group()
{
bool again;
do
{
again = false;
foreach (var o in this)
{
String key = o.Key;
int prefixLength = key.IndexOf('.') + 1;
if (prefixLength == key.Length)
{
var subGroup = o.Value as Map;
if (null == subGroup)
{
Remove(key);
Add(key, subGroup = new Map { _name = (String)o.Value });
again = true;
}
foreach (var o2 in this.ToList())
{
String key2 = o2.Key;
if (key2.StartsWith(key) && key2.Length > prefixLength)
{
subGroup.Add(key2.Substring(prefixLength), o2.Value);
Remove(key2);
again = true;
}
}
subGroup.Group();
if (again)
break;
}
}
} while (again);
}