Working version in C#

Eats its own dog food in terms of parsing, outputting a string
representation, parsing the output successfully, and the copy is
functionally the same as the original.