public static IPrincipal DeserializePrincipal(SerializedRunAs runAs)
{
if (runAs == null)
return null;
if (runAs.Name == null)
return null;
if (runAs.Name == "$system") //TODO: make sure nobody else uses it
return SystemAccount.Principal;
return new OpenGenericPrincipal(new GenericIdentity(runAs.Name), runAs.Roles);
}