public bool IsVisibleTo( [NotNull] Rank rank ) { if ( rank == null ) throw new ArgumentNullException( "rank" ); return !IsHidden && CanBeCalledBy( rank ); }