private String ValueToString(Object value) { if (value == null) { return "null"; } String s; var selfDesc = value as ISelfDescribing; if (selfDesc != null) { var d = new Description(); selfDesc.DescribeTo(d); s = d.ToString(); } else { s = value.ToPrettyString(); } //remove any start/end cruft var cleaned = ReTabReplace.Replace(s.Trim(),Indent); //ensure properly indented var indented = ReNewlineReplace.Replace(cleaned, Environment.NewLine + m_currentIndent); return indented; }