//public SPPermissionCollection GetUserPermissions(string userId)
        //{
        //    if (this.CanSetPermissions)
        //    {
        //        var user = new SPUser(userId, true);
        //        if (this.Permissions == null)
        //            this.GetPermissions();

        //        if (this.Permissions)
        //    }
        //    else
        //        return null;
        //}

        #endregion

        #region GET PERMISSIONS

        public SPPermissionCollection GetPermissions()
        {
            if (!SecObj.IsPropertyReady(x => x.RoleAssignments))
            {
                CTX.Lae(SecObj, true, s => s.RoleAssignments);
            }

            Type secType     = SecObj.GetType();
            var  genMeth     = ExpressionMethod.MakeGenericMethod(secType);
            var  expressions = genMeth.Invoke(this, new object[1] {
                new string[2] {
                    NameProperty, IdProperty
                }
            });

            var specLae = typeof(CTX).GetMethod("SpecialLae", BindingFlags.NonPublic | BindingFlags.Static).MakeGenericMethod(SecObj.GetType());

            specLae.Invoke(null, new object[3] {
                SecObj, true, expressions
            });

            Permissions = SPPermissionCollection.ResolvePermissions(this);
            return(Permissions);
        }