Two-part question here about adding C# syntax sugar using Roslyn:

First, is it possible using Roslyn to add new syntax to C#, or does it always have to be a transformation from valid C# to other valid C#? For example, I'd like to do something like VB.NET's XML literals:

```
XElement lvalue = <some><xml /></some>;

```

Is it possible to transform this at compile time to:

```
XElement lvalue = new XElement("some", new XElement("xml")); // or whatever

```

Second, if that's possible, what does it look like to the user? Can I do this such that one writes the first expression, and never sees the transformation to the second expression (it happens transparently at compile-time)? Or do Roslyn syntax transformations have to appear as sort of an IDE "refactoring suggestion"? I'm unclear on this from the Roslyn docs.