private Context GetOrCreateChildEnvironment(Context environment, string envname)
{
var names = envname.Split('.');
foreach (var name in names)
{
var result = environment.GetValue(name);
if (result != null)
environment = (Context)result;
else
{
var context = new Context(environment);
environment.SetValue(name, context);
environment = context;
}
}
return environment;
}