using System;
public class Program
{
internal class A
{
public static implicit operator A(string s) { return new A { Value = s }; }
public static implicit operator string(A a) { return a.Value; }
public string Value;
public override string ToString() { return Value; }
}
internal class B
{
public static implicit operator B(string s) { return new B { Value = s }; }
public static implicit operator B(A a) { return new B { Value = a }; }
public static implicit operator A(B b)
{
b.Value = "clobbered"; // darn, no semantics enforced by the language
return new Random().Next().ToString("X"); // 'basically unspecified'?
}
public string Value;
public override string ToString() { return Value; }
}
public static void Main(string[] args)
{
B hello = "hello";
A world = hello;
Console.WriteLine("{0} {1}", hello, world);
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFByb2dyYW0KewogICAgaW50ZXJuYWwgY2xhc3MgQQogICAgewogICAgICAgIHB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3IgQShzdHJpbmcgcykgeyByZXR1cm4gbmV3IEEgeyBWYWx1ZSA9IHMgfTsgfQogICAgICAgIHB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3Igc3RyaW5nKEEgYSkgeyByZXR1cm4gYS5WYWx1ZTsgfQoKICAgICAgICBwdWJsaWMgc3RyaW5nIFZhbHVlOwogICAgICAgIHB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKSB7IHJldHVybiBWYWx1ZTsgfQogICAgfQoKICAgIGludGVybmFsIGNsYXNzIEIKICAgIHsKICAgICAgICBwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIEIoc3RyaW5nIHMpIHsgcmV0dXJuIG5ldyBCIHsgVmFsdWUgPSBzIH07IH0KICAgICAgICBwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIEIoQSBhKSAgICAgIHsgcmV0dXJuIG5ldyBCIHsgVmFsdWUgPSBhIH07IH0KICAgICAgICBwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIEEoQiBiKQogICAgICAgIHsKICAgICAgICAgICAgYi5WYWx1ZSA9ICJjbG9iYmVyZWQiOyAvLyBkYXJuLCBubyBzZW1hbnRpY3MgZW5mb3JjZWQgYnkgdGhlIGxhbmd1YWdlCiAgICAgICAgICAgIHJldHVybiBuZXcgUmFuZG9tKCkuTmV4dCgpLlRvU3RyaW5nKCJYIik7IC8vICdiYXNpY2FsbHkgdW5zcGVjaWZpZWQnPwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0cmluZyBWYWx1ZTsKICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIFRvU3RyaW5nKCkgeyByZXR1cm4gVmFsdWU7IH0KICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgIHsKICAgICAgICAgQiBoZWxsbyA9ICJoZWxsbyI7CiAgICAgICAgIEEgd29ybGQgPSBoZWxsbzsKCiAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJ7MH0gezF9IiwgaGVsbG8sIHdvcmxkKTsKICAgIH0gICAKfQ==