Scrivere una libreria è un po' come estendere il linguaggio. Tuttavia chi realizza una librerie ha meno libertà e potenza espressiva rispetto a chi progetta un linguaggio: il linguaggio sottostante impone limiti, sia in ciò che è possibile definire che nei vincoli esprimibili. Ad esempio, in C# è possibile vincolare i parametri di una classe generica ad essere a loro volta classi, ma non possiamo vincolarli ad essere interfacce. Attraverso Roslyn (la nuova tecnologia alla base dei compilatori Microsoft), chi crea una libreria può ora includere degli analizzatori compile-time, creando una cosiddetta Code-Aware Library. L'analizzatore custom può implementare logiche complesse, di fatto estendendo i vincoli esprimibili con il normale type system. In questo talk parleremo sia della tecnologia delle Code-Aware Libraries che di un loro utilizzo avanzato, estendendo il C# con un costrutto di cross-cast tra interfacce completamente type-safe.