private void Refresh(List <MinionAssignablesProxy> identities, bool rebuild)
    {
        Rotatable component = target.GetComponent <Rotatable>();
        bool      rotated   = (UnityEngine.Object)component != (UnityEngine.Object)null && component.IsRotated;

        defaultsRow.SetRotated(rotated);
        defaultsRow.SetContent(target.DefaultPermission, OnDefaultPermissionChanged);
        if (rebuild)
        {
            ClearContent();
        }
        foreach (MinionAssignablesProxy identity in identities)
        {
            AccessControlSideScreenRow accessControlSideScreenRow;
            if (rebuild)
            {
                accessControlSideScreenRow = rowPool.GetFreeElement(rowGroup, true);
                identityRowMap.Add(identity, accessControlSideScreenRow);
            }
            else
            {
                accessControlSideScreenRow = identityRowMap[identity];
            }
            AccessControl.Permission setPermission = target.GetSetPermission(identity);
            bool isDefault = target.IsDefaultPermission(identity);
            accessControlSideScreenRow.SetRotated(rotated);
            accessControlSideScreenRow.SetMinionContent(identity, setPermission, isDefault, OnPermissionChanged, OnPermissionDefault);
        }
        RefreshOnline();
        ContentContainer.SetActive(target.controlEnabled);
    }