public override string ToString() {
     var str = new AsString(this);
     str.Append(base.ToString());
     str.AddComma();
     str.Append("persisted", IsPersisted);
     str.Append("type", Specification.ShortName);
     return str.ToString();
 }
        protected internal virtual void ToString(AsString str) {
            str.Append(ResolveState.CurrentState.Code);

            if (Oid != null) {
                str.Append(":");
                str.Append(Oid.ToString());
            }
            else {
                str.Append(":-");
            }
            str.AddComma();
            if (specification == null) {
                str.Append("class", Object.GetType().FullName);
            }
            else {
                str.Append("specification", specification.ShortName);
                str.Append("Type", specification.FullName);
            }

            if (Object != null && TypeUtils.IsProxy(Object.GetType())) {
                str.Append("proxy", Object.GetType().FullName);
            }
            else {
                str.Append("proxy", "None");
            }

            str.Append("version", version == null ? null : version.AsSequence());
        }