public static SystemPatch WithPrivacy(this SystemPatch system, SystemPrivacySubject subject, PrivacyLevel level)
        {
            // what do you mean switch expressions can't be statements >.>
            _ = subject switch
            {
                SystemPrivacySubject.Description => system.DescriptionPrivacy   = level,
                SystemPrivacySubject.Front => system.FrontPrivacy               = level,
                SystemPrivacySubject.FrontHistory => system.FrontHistoryPrivacy = level,
                SystemPrivacySubject.MemberList => system.MemberListPrivacy     = level,
                _ => throw new ArgumentOutOfRangeException($"Unknown privacy subject {subject}")
            };

            return(system);
        }
    public static bool TryParseSystemPrivacy(string input, out SystemPrivacySubject subject)
    {
        switch (input.ToLowerInvariant())
        {
        case "description":
        case "desc":
        case "text":
        case "info":
            subject = SystemPrivacySubject.Description;
            break;

        case "pronouns":
        case "prns":
            subject = SystemPrivacySubject.Pronouns;
            break;

        case "members":
        case "memberlist":
        case "list":
        case "mlist":
            subject = SystemPrivacySubject.MemberList;
            break;

        case "fronter":
        case "fronters":
        case "front":
            subject = SystemPrivacySubject.Front;
            break;

        case "switch":
        case "switches":
        case "fronthistory":
        case "fh":
            subject = SystemPrivacySubject.FrontHistory;
            break;

        case "groups":
        case "gs":
            subject = SystemPrivacySubject.GroupList;
            break;

        default:
            subject = default;
            return(false);
        }

        return(true);
    }