public static string fromDisplayName(string self)
{
if (self.Length == 0) return "";
StringBuilder s = new StringBuilder(self.Length);
int c = self[0];
int c2 = self.Length == 1 ? 0 : self[1];
if ('A' <= c && c <= 'Z' && !('A' <= c2 && c2 <= 'Z')) c |= 0x20;
s.Append((char)c);
int last = c;
for (int i=1; i<self.Length; ++i)
{
c = self[i];
if (c != ' ')
{
if (last == ' ' && 'a' <= c && c <= 'z') c &= ~0x20;
s.Append((char)c);
}
last = c;
}
return s.ToString();
}