Program.cs can be more interactive, but I wanted to show how to use the interface. I have researched MSDN documentation, books on C#, Stackoverflow, Github, c-sharpcorner and many more sources - examples were not complete (examples used "NotImplementedException").
If you feel you can add something, please go ahead.
I have used a few C# 6 features, like => operator, immutable properties, expression-bodied function members, using static directive, string interpolation, auto-property initializers, nameof