/// <summary> /// Get first (chronologically) descendant at the specified level /// </summary> /// <param name="level"> /// Level at which to find descendant. Must point to a descendant (i.e. be less than <code>this.Level</code> and greater or /// equal to zero (which is leaf level). /// </param> /// <param name="backwards"> /// Whether to find oldest (<see langword="false"/>) or newest (<see langword="true"/>) descendant. /// </param> /// <returns> /// First descendant at <paramref name="level"/> or <see langword="null"/> if none exists. /// </returns> public IDataFolder GetFirstDescendant(int level, bool backwards) { RequireDescendant(level); IDataFolder descendant = GetFirstChildFolder(backwards); if (descendant != null && level < (this.Level - 1)) { descendant = descendant.GetFirstDescendant(level, backwards); } else if (level == (this.Level - 1)) { // reached target level return(descendant); } return(null); }