Inside C#, Second Edition