static MessageEnumBase SearchMessageUp(Message p, string[] name)
{
if (p is Proto)
return SearchMessageDown (p, name);
Message m = p as Message;
if (m.ProtoName == name [0]) {
if (name.Length == 1)
return m;
string[] subName = new string[name.Length - 1];
Array.Copy (name, 1, subName, 0, subName.Length);
return SearchMessageDown (m, subName);
}
MessageEnumBase down = SearchMessageDown (p, name);
if (down != null)
return down;
return SearchMessageUp (m.Parent, name);
}