public override IActorRef GetChild(IEnumerable<string> name)
{
var current = (IActorRef) this;
int index = 0;
foreach (string element in name)
{
var currentLocalActorRef = current as LocalActorRef;
if(currentLocalActorRef!=null)
{
switch(element)
{
case "..":
current = currentLocalActorRef.Parent;
break;
case "":
break;
default:
current = currentLocalActorRef.GetSingleChild(element);
break;
}
}
else
{
//Current is not a LocalActorRef
if (current != null)
{
var rest = name.Skip(index).ToList();
return current.AsInstanceOf<IInternalActorRef>().GetChild(rest);
}
throw new NotSupportedException("Bug, we should not get here");
}
index++;
}
return current;
}
}