public UObject GetHighestOuter( byte offset = (byte)0 )
{
var parents = new List<UObject>();
for( UObject outer = Outer; outer != null; outer = outer.Outer )
{
parents.Add( outer );
}
return parents.Count > 0 ? parents[parents.Count - offset] : Outer;
}