public override string/*!*/ ToString() {
#if DEBUG && !SILVERLIGHT && CLR2
if (RubyBinder._DumpingExpression) {
return RubyUtils.ObjectBaseToMutableString(this).ToString();
}
#endif
var site = _immediateClass.ToStringSite;
object toStringResult = site.Target(site, this);
if (ReferenceEquals(toStringResult, RubyOps.ForwardToBase)) {
return ((IRubyObject)this).BaseToString();
}
string str = toStringResult as string;
if (str != null) {
return str;
}
var mstr = toStringResult as MutableString ?? RubyUtils.ObjectToMutableString(_immediateClass.Context, toStringResult);
return mstr.ToString();
}