         
             return try autoreleasepool {
                 
-                guard T.shouldInsert(from: source, in: self) else {
+                let entityType = into.entityClass as! T.Type
+                
+                guard entityType.shouldInsert(from: source, in: self) else {
                     
                     return nil
                 }

                }
                else {
                    
                    guard T.shouldInsert(from: source, in: self) else {
                        
                        return nil
                    }

            )
            
            return try autoreleasepool {
              
                let entityType = into.entityClass as! T.Type
              
                let uniqueIDKeyPath = entityType.uniqueIDKeyPath
                guard let uniqueIDValue = try entityType.uniqueID(from: source, in: self) else {
                    
                    return nil
                }
                
                if let object = self.fetchOne(From(entityType), Where(uniqueIDKeyPath, isEqualTo: uniqueIDValue)) {
                    
                    guard entityType.shouldUpdate(from: source, in: self) else {
                        
                        return nil
                    }
