private IActiveDirectoryObject WrapObjectInner(AADObjectInner inner)
        {
            var    managementClient = ((GroupsOperations)manager.Inner.Groups).Client;
            string serialized       = SafeJsonConvert.SerializeObject(inner, managementClient.SerializationSettings);

            switch (inner.ObjectType)
            {
            case "User":
                UserInner user = SafeJsonConvert.DeserializeObject <UserInner>(serialized, managementClient.DeserializationSettings);
                return(new ActiveDirectoryUserImpl(user, manager));

            case "Group":
                ADGroupInner group = SafeJsonConvert.DeserializeObject <ADGroupInner>(serialized, managementClient.DeserializationSettings);
                return(new ActiveDirectoryGroupImpl(group, manager));

            case "ServicePrincipal":
                ServicePrincipalInner sp = SafeJsonConvert.DeserializeObject <ServicePrincipalInner>(serialized, managementClient.DeserializationSettings);
                return(new ServicePrincipalImpl(sp, manager));

            case "Application":
                ApplicationInner app = SafeJsonConvert.DeserializeObject <ApplicationInner>(serialized, managementClient.DeserializationSettings);
                return(new ActiveDirectoryApplicationImpl(app, manager));

            default:
                return(null);
            }
        }
 protected override IServicePrincipal WrapModel(ServicePrincipalInner servicePrincipalInner)
 {
     return(servicePrincipalInner == null ? null : new ServicePrincipalImpl(servicePrincipalInner, manager));
 }