First blank = new First();
First populated = new First(true);
int value = NestedProperty<First,int>(blank,f => f.Second.Third.id);
Console.WriteLine(value);
value = NestedProperty<First,int>(populated,f => f.Second.Third.id);
Console.WriteLine(value);
public E NestedProperty<T,E>(T Parent, Func<T,E> Path, E IfNullOrEmpty = default(E))
public Second Second { get; set; }
public int id { get; set; }
this.Second = new Second();
public Third Third { get; set; }
public int id { get; set; }
this.Third = new Third();
public int id { get; set; }