git add -f bin/default/librpc/gen_ndr/*.{c,h,ndr,pidl} bin/default/source*/librpc...
[metze/samba/wip.git] / bin / default / librpc / gen_ndr / py_drsuapi.c
index cb12d84a3827167e02e00da5048f5f5d95d1caa4..bb9235f954eea8ccddeac29be92c8ca591c8dbb4 100644 (file)
@@ -1,5 +1,6 @@
 
 /* Python wrapper functions auto-generated by pidl */
+#define PY_SSIZE_T_CLEAN 1 /* We use Py_ssize_t for PyArg_ParseTupleAndKeywords */
 #include <Python.h>
 #include "includes.h"
 #include <pytalloc.h>
@@ -9,7 +10,7 @@
 #include "bin/default/librpc/gen_ndr/ndr_drsuapi_c.h"
 
 /*
- * These functions are here to ensure they can be optomised out by
+ * These functions are here to ensure they can be optimized out by
  * the compiler based on the constant input values
  */
 
@@ -250,7 +251,7 @@ union drsuapi_QuerySitesByCostRequest *py_export_drsuapi_QuerySitesByCostRequest
 static PyTypeObject drsuapi_InterfaceType;
 
 void initdrsuapi(void);static PyTypeObject *GUID_Type;
-static PyTypeObject *Object_Type;
+static PyTypeObject *BaseObject_Type;
 static PyTypeObject *dom_sid_Type;
 static PyTypeObject *lsa_String_Type;
 static PyTypeObject *policy_handle_Type;
@@ -268,6 +269,10 @@ static PyObject *py_drsuapi_DsBindInfo24_get_supported_extensions(PyObject *obj,
 static int py_drsuapi_DsBindInfo24_set_supported_extensions(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo24 *object = (struct drsuapi_DsBindInfo24 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions));
                if (PyLong_Check(value)) {
@@ -311,6 +316,10 @@ static PyObject *py_drsuapi_DsBindInfo24_get_site_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsBindInfo24_set_site_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo24 *object = (struct drsuapi_DsBindInfo24 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -331,6 +340,10 @@ static PyObject *py_drsuapi_DsBindInfo24_get_pid(PyObject *obj, void *closure)
 static int py_drsuapi_DsBindInfo24_set_pid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo24 *object = (struct drsuapi_DsBindInfo24 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->pid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->pid));
                if (PyLong_Check(value)) {
@@ -364,10 +377,25 @@ static int py_drsuapi_DsBindInfo24_set_pid(PyObject *py_obj, PyObject *value, vo
 }
 
 static PyGetSetDef py_drsuapi_DsBindInfo24_getsetters[] = {
-       { discard_const_p(char, "supported_extensions"), py_drsuapi_DsBindInfo24_get_supported_extensions, py_drsuapi_DsBindInfo24_set_supported_extensions },
-       { discard_const_p(char, "site_guid"), py_drsuapi_DsBindInfo24_get_site_guid, py_drsuapi_DsBindInfo24_set_site_guid },
-       { discard_const_p(char, "pid"), py_drsuapi_DsBindInfo24_get_pid, py_drsuapi_DsBindInfo24_set_pid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "supported_extensions"),
+               .get = py_drsuapi_DsBindInfo24_get_supported_extensions,
+               .set = py_drsuapi_DsBindInfo24_set_supported_extensions,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions")
+       },
+       {
+               .name = discard_const_p(char, "site_guid"),
+               .get = py_drsuapi_DsBindInfo24_get_site_guid,
+               .set = py_drsuapi_DsBindInfo24_set_site_guid,
+               .doc = discard_const_p(char, "PIDL-generated element site_guid")
+       },
+       {
+               .name = discard_const_p(char, "pid"),
+               .get = py_drsuapi_DsBindInfo24_get_pid,
+               .set = py_drsuapi_DsBindInfo24_set_pid,
+               .doc = discard_const_p(char, "PIDL-generated element pid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsBindInfo24_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -378,22 +406,31 @@ static PyObject *py_drsuapi_DsBindInfo24_new(PyTypeObject *type, PyObject *args,
 static PyObject *py_drsuapi_DsBindInfo24_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsBindInfo24 *object = (struct drsuapi_DsBindInfo24 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo24);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo24);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsBindInfo24_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsBindInfo24 *object = (struct drsuapi_DsBindInfo24 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -451,7 +488,6 @@ static PyTypeObject drsuapi_DsBindInfo24_Type = {
        .tp_getset = py_drsuapi_DsBindInfo24_getsetters,
        .tp_methods = py_drsuapi_DsBindInfo24_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsBindInfo24_new,
 };
 
@@ -467,6 +503,10 @@ static PyObject *py_drsuapi_DsBindInfo28_get_supported_extensions(PyObject *obj,
 static int py_drsuapi_DsBindInfo28_set_supported_extensions(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo28 *object = (struct drsuapi_DsBindInfo28 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions));
                if (PyLong_Check(value)) {
@@ -510,6 +550,10 @@ static PyObject *py_drsuapi_DsBindInfo28_get_site_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsBindInfo28_set_site_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo28 *object = (struct drsuapi_DsBindInfo28 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -530,6 +574,10 @@ static PyObject *py_drsuapi_DsBindInfo28_get_pid(PyObject *obj, void *closure)
 static int py_drsuapi_DsBindInfo28_set_pid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo28 *object = (struct drsuapi_DsBindInfo28 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->pid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->pid));
                if (PyLong_Check(value)) {
@@ -573,6 +621,10 @@ static PyObject *py_drsuapi_DsBindInfo28_get_repl_epoch(PyObject *obj, void *clo
 static int py_drsuapi_DsBindInfo28_set_repl_epoch(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo28 *object = (struct drsuapi_DsBindInfo28 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->repl_epoch");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->repl_epoch));
                if (PyLong_Check(value)) {
@@ -606,11 +658,31 @@ static int py_drsuapi_DsBindInfo28_set_repl_epoch(PyObject *py_obj, PyObject *va
 }
 
 static PyGetSetDef py_drsuapi_DsBindInfo28_getsetters[] = {
-       { discard_const_p(char, "supported_extensions"), py_drsuapi_DsBindInfo28_get_supported_extensions, py_drsuapi_DsBindInfo28_set_supported_extensions },
-       { discard_const_p(char, "site_guid"), py_drsuapi_DsBindInfo28_get_site_guid, py_drsuapi_DsBindInfo28_set_site_guid },
-       { discard_const_p(char, "pid"), py_drsuapi_DsBindInfo28_get_pid, py_drsuapi_DsBindInfo28_set_pid },
-       { discard_const_p(char, "repl_epoch"), py_drsuapi_DsBindInfo28_get_repl_epoch, py_drsuapi_DsBindInfo28_set_repl_epoch },
-       { NULL }
+       {
+               .name = discard_const_p(char, "supported_extensions"),
+               .get = py_drsuapi_DsBindInfo28_get_supported_extensions,
+               .set = py_drsuapi_DsBindInfo28_set_supported_extensions,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions")
+       },
+       {
+               .name = discard_const_p(char, "site_guid"),
+               .get = py_drsuapi_DsBindInfo28_get_site_guid,
+               .set = py_drsuapi_DsBindInfo28_set_site_guid,
+               .doc = discard_const_p(char, "PIDL-generated element site_guid")
+       },
+       {
+               .name = discard_const_p(char, "pid"),
+               .get = py_drsuapi_DsBindInfo28_get_pid,
+               .set = py_drsuapi_DsBindInfo28_set_pid,
+               .doc = discard_const_p(char, "PIDL-generated element pid")
+       },
+       {
+               .name = discard_const_p(char, "repl_epoch"),
+               .get = py_drsuapi_DsBindInfo28_get_repl_epoch,
+               .set = py_drsuapi_DsBindInfo28_set_repl_epoch,
+               .doc = discard_const_p(char, "PIDL-generated element repl_epoch")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsBindInfo28_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -621,22 +693,31 @@ static PyObject *py_drsuapi_DsBindInfo28_new(PyTypeObject *type, PyObject *args,
 static PyObject *py_drsuapi_DsBindInfo28_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsBindInfo28 *object = (struct drsuapi_DsBindInfo28 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo28);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo28);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsBindInfo28_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsBindInfo28 *object = (struct drsuapi_DsBindInfo28 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -694,7 +775,6 @@ static PyTypeObject drsuapi_DsBindInfo28_Type = {
        .tp_getset = py_drsuapi_DsBindInfo28_getsetters,
        .tp_methods = py_drsuapi_DsBindInfo28_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsBindInfo28_new,
 };
 
@@ -710,6 +790,10 @@ static PyObject *py_drsuapi_DsBindInfo32_get_supported_extensions(PyObject *obj,
 static int py_drsuapi_DsBindInfo32_set_supported_extensions(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo32 *object = (struct drsuapi_DsBindInfo32 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions));
                if (PyLong_Check(value)) {
@@ -753,6 +837,10 @@ static PyObject *py_drsuapi_DsBindInfo32_get_site_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsBindInfo32_set_site_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo32 *object = (struct drsuapi_DsBindInfo32 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -773,6 +861,10 @@ static PyObject *py_drsuapi_DsBindInfo32_get_pid(PyObject *obj, void *closure)
 static int py_drsuapi_DsBindInfo32_set_pid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo32 *object = (struct drsuapi_DsBindInfo32 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->pid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->pid));
                if (PyLong_Check(value)) {
@@ -816,6 +908,10 @@ static PyObject *py_drsuapi_DsBindInfo32_get_repl_epoch(PyObject *obj, void *clo
 static int py_drsuapi_DsBindInfo32_set_repl_epoch(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo32 *object = (struct drsuapi_DsBindInfo32 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->repl_epoch");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->repl_epoch));
                if (PyLong_Check(value)) {
@@ -859,6 +955,10 @@ static PyObject *py_drsuapi_DsBindInfo32_get_supported_extensions_ext(PyObject *
 static int py_drsuapi_DsBindInfo32_set_supported_extensions_ext(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo32 *object = (struct drsuapi_DsBindInfo32 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions_ext");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions_ext));
                if (PyLong_Check(value)) {
@@ -892,12 +992,37 @@ static int py_drsuapi_DsBindInfo32_set_supported_extensions_ext(PyObject *py_obj
 }
 
 static PyGetSetDef py_drsuapi_DsBindInfo32_getsetters[] = {
-       { discard_const_p(char, "supported_extensions"), py_drsuapi_DsBindInfo32_get_supported_extensions, py_drsuapi_DsBindInfo32_set_supported_extensions },
-       { discard_const_p(char, "site_guid"), py_drsuapi_DsBindInfo32_get_site_guid, py_drsuapi_DsBindInfo32_set_site_guid },
-       { discard_const_p(char, "pid"), py_drsuapi_DsBindInfo32_get_pid, py_drsuapi_DsBindInfo32_set_pid },
-       { discard_const_p(char, "repl_epoch"), py_drsuapi_DsBindInfo32_get_repl_epoch, py_drsuapi_DsBindInfo32_set_repl_epoch },
-       { discard_const_p(char, "supported_extensions_ext"), py_drsuapi_DsBindInfo32_get_supported_extensions_ext, py_drsuapi_DsBindInfo32_set_supported_extensions_ext },
-       { NULL }
+       {
+               .name = discard_const_p(char, "supported_extensions"),
+               .get = py_drsuapi_DsBindInfo32_get_supported_extensions,
+               .set = py_drsuapi_DsBindInfo32_set_supported_extensions,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions")
+       },
+       {
+               .name = discard_const_p(char, "site_guid"),
+               .get = py_drsuapi_DsBindInfo32_get_site_guid,
+               .set = py_drsuapi_DsBindInfo32_set_site_guid,
+               .doc = discard_const_p(char, "PIDL-generated element site_guid")
+       },
+       {
+               .name = discard_const_p(char, "pid"),
+               .get = py_drsuapi_DsBindInfo32_get_pid,
+               .set = py_drsuapi_DsBindInfo32_set_pid,
+               .doc = discard_const_p(char, "PIDL-generated element pid")
+       },
+       {
+               .name = discard_const_p(char, "repl_epoch"),
+               .get = py_drsuapi_DsBindInfo32_get_repl_epoch,
+               .set = py_drsuapi_DsBindInfo32_set_repl_epoch,
+               .doc = discard_const_p(char, "PIDL-generated element repl_epoch")
+       },
+       {
+               .name = discard_const_p(char, "supported_extensions_ext"),
+               .get = py_drsuapi_DsBindInfo32_get_supported_extensions_ext,
+               .set = py_drsuapi_DsBindInfo32_set_supported_extensions_ext,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions_ext")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsBindInfo32_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -908,22 +1033,31 @@ static PyObject *py_drsuapi_DsBindInfo32_new(PyTypeObject *type, PyObject *args,
 static PyObject *py_drsuapi_DsBindInfo32_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsBindInfo32 *object = (struct drsuapi_DsBindInfo32 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo32);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo32);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsBindInfo32_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsBindInfo32 *object = (struct drsuapi_DsBindInfo32 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -981,7 +1115,6 @@ static PyTypeObject drsuapi_DsBindInfo32_Type = {
        .tp_getset = py_drsuapi_DsBindInfo32_getsetters,
        .tp_methods = py_drsuapi_DsBindInfo32_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsBindInfo32_new,
 };
 
@@ -997,6 +1130,10 @@ static PyObject *py_drsuapi_DsBindInfo48_get_supported_extensions(PyObject *obj,
 static int py_drsuapi_DsBindInfo48_set_supported_extensions(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions));
                if (PyLong_Check(value)) {
@@ -1040,6 +1177,10 @@ static PyObject *py_drsuapi_DsBindInfo48_get_site_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsBindInfo48_set_site_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -1060,6 +1201,10 @@ static PyObject *py_drsuapi_DsBindInfo48_get_pid(PyObject *obj, void *closure)
 static int py_drsuapi_DsBindInfo48_set_pid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->pid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->pid));
                if (PyLong_Check(value)) {
@@ -1103,6 +1248,10 @@ static PyObject *py_drsuapi_DsBindInfo48_get_repl_epoch(PyObject *obj, void *clo
 static int py_drsuapi_DsBindInfo48_set_repl_epoch(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->repl_epoch");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->repl_epoch));
                if (PyLong_Check(value)) {
@@ -1146,6 +1295,10 @@ static PyObject *py_drsuapi_DsBindInfo48_get_supported_extensions_ext(PyObject *
 static int py_drsuapi_DsBindInfo48_set_supported_extensions_ext(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions_ext");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions_ext));
                if (PyLong_Check(value)) {
@@ -1189,6 +1342,10 @@ static PyObject *py_drsuapi_DsBindInfo48_get_config_dn_guid(PyObject *obj, void
 static int py_drsuapi_DsBindInfo48_set_config_dn_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->config_dn_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -1199,13 +1356,43 @@ static int py_drsuapi_DsBindInfo48_set_config_dn_guid(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsBindInfo48_getsetters[] = {
-       { discard_const_p(char, "supported_extensions"), py_drsuapi_DsBindInfo48_get_supported_extensions, py_drsuapi_DsBindInfo48_set_supported_extensions },
-       { discard_const_p(char, "site_guid"), py_drsuapi_DsBindInfo48_get_site_guid, py_drsuapi_DsBindInfo48_set_site_guid },
-       { discard_const_p(char, "pid"), py_drsuapi_DsBindInfo48_get_pid, py_drsuapi_DsBindInfo48_set_pid },
-       { discard_const_p(char, "repl_epoch"), py_drsuapi_DsBindInfo48_get_repl_epoch, py_drsuapi_DsBindInfo48_set_repl_epoch },
-       { discard_const_p(char, "supported_extensions_ext"), py_drsuapi_DsBindInfo48_get_supported_extensions_ext, py_drsuapi_DsBindInfo48_set_supported_extensions_ext },
-       { discard_const_p(char, "config_dn_guid"), py_drsuapi_DsBindInfo48_get_config_dn_guid, py_drsuapi_DsBindInfo48_set_config_dn_guid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "supported_extensions"),
+               .get = py_drsuapi_DsBindInfo48_get_supported_extensions,
+               .set = py_drsuapi_DsBindInfo48_set_supported_extensions,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions")
+       },
+       {
+               .name = discard_const_p(char, "site_guid"),
+               .get = py_drsuapi_DsBindInfo48_get_site_guid,
+               .set = py_drsuapi_DsBindInfo48_set_site_guid,
+               .doc = discard_const_p(char, "PIDL-generated element site_guid")
+       },
+       {
+               .name = discard_const_p(char, "pid"),
+               .get = py_drsuapi_DsBindInfo48_get_pid,
+               .set = py_drsuapi_DsBindInfo48_set_pid,
+               .doc = discard_const_p(char, "PIDL-generated element pid")
+       },
+       {
+               .name = discard_const_p(char, "repl_epoch"),
+               .get = py_drsuapi_DsBindInfo48_get_repl_epoch,
+               .set = py_drsuapi_DsBindInfo48_set_repl_epoch,
+               .doc = discard_const_p(char, "PIDL-generated element repl_epoch")
+       },
+       {
+               .name = discard_const_p(char, "supported_extensions_ext"),
+               .get = py_drsuapi_DsBindInfo48_get_supported_extensions_ext,
+               .set = py_drsuapi_DsBindInfo48_set_supported_extensions_ext,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions_ext")
+       },
+       {
+               .name = discard_const_p(char, "config_dn_guid"),
+               .get = py_drsuapi_DsBindInfo48_get_config_dn_guid,
+               .set = py_drsuapi_DsBindInfo48_set_config_dn_guid,
+               .doc = discard_const_p(char, "PIDL-generated element config_dn_guid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsBindInfo48_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -1216,22 +1403,31 @@ static PyObject *py_drsuapi_DsBindInfo48_new(PyTypeObject *type, PyObject *args,
 static PyObject *py_drsuapi_DsBindInfo48_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo48);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo48);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsBindInfo48_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsBindInfo48 *object = (struct drsuapi_DsBindInfo48 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -1289,7 +1485,6 @@ static PyTypeObject drsuapi_DsBindInfo48_Type = {
        .tp_getset = py_drsuapi_DsBindInfo48_getsetters,
        .tp_methods = py_drsuapi_DsBindInfo48_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsBindInfo48_new,
 };
 
@@ -1305,6 +1500,10 @@ static PyObject *py_drsuapi_DsBindInfo52_get_supported_extensions(PyObject *obj,
 static int py_drsuapi_DsBindInfo52_set_supported_extensions(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions));
                if (PyLong_Check(value)) {
@@ -1348,6 +1547,10 @@ static PyObject *py_drsuapi_DsBindInfo52_get_site_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsBindInfo52_set_site_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -1368,6 +1571,10 @@ static PyObject *py_drsuapi_DsBindInfo52_get_pid(PyObject *obj, void *closure)
 static int py_drsuapi_DsBindInfo52_set_pid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->pid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->pid));
                if (PyLong_Check(value)) {
@@ -1411,6 +1618,10 @@ static PyObject *py_drsuapi_DsBindInfo52_get_repl_epoch(PyObject *obj, void *clo
 static int py_drsuapi_DsBindInfo52_set_repl_epoch(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->repl_epoch");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->repl_epoch));
                if (PyLong_Check(value)) {
@@ -1454,6 +1665,10 @@ static PyObject *py_drsuapi_DsBindInfo52_get_supported_extensions_ext(PyObject *
 static int py_drsuapi_DsBindInfo52_set_supported_extensions_ext(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_extensions_ext");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_extensions_ext));
                if (PyLong_Check(value)) {
@@ -1497,6 +1712,10 @@ static PyObject *py_drsuapi_DsBindInfo52_get_config_dn_guid(PyObject *obj, void
 static int py_drsuapi_DsBindInfo52_set_config_dn_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->config_dn_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -1517,6 +1736,10 @@ static PyObject *py_drsuapi_DsBindInfo52_get_supported_capabilities_ext(PyObject
 static int py_drsuapi_DsBindInfo52_set_supported_capabilities_ext(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->supported_capabilities_ext");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->supported_capabilities_ext));
                if (PyLong_Check(value)) {
@@ -1550,14 +1773,49 @@ static int py_drsuapi_DsBindInfo52_set_supported_capabilities_ext(PyObject *py_o
 }
 
 static PyGetSetDef py_drsuapi_DsBindInfo52_getsetters[] = {
-       { discard_const_p(char, "supported_extensions"), py_drsuapi_DsBindInfo52_get_supported_extensions, py_drsuapi_DsBindInfo52_set_supported_extensions },
-       { discard_const_p(char, "site_guid"), py_drsuapi_DsBindInfo52_get_site_guid, py_drsuapi_DsBindInfo52_set_site_guid },
-       { discard_const_p(char, "pid"), py_drsuapi_DsBindInfo52_get_pid, py_drsuapi_DsBindInfo52_set_pid },
-       { discard_const_p(char, "repl_epoch"), py_drsuapi_DsBindInfo52_get_repl_epoch, py_drsuapi_DsBindInfo52_set_repl_epoch },
-       { discard_const_p(char, "supported_extensions_ext"), py_drsuapi_DsBindInfo52_get_supported_extensions_ext, py_drsuapi_DsBindInfo52_set_supported_extensions_ext },
-       { discard_const_p(char, "config_dn_guid"), py_drsuapi_DsBindInfo52_get_config_dn_guid, py_drsuapi_DsBindInfo52_set_config_dn_guid },
-       { discard_const_p(char, "supported_capabilities_ext"), py_drsuapi_DsBindInfo52_get_supported_capabilities_ext, py_drsuapi_DsBindInfo52_set_supported_capabilities_ext },
-       { NULL }
+       {
+               .name = discard_const_p(char, "supported_extensions"),
+               .get = py_drsuapi_DsBindInfo52_get_supported_extensions,
+               .set = py_drsuapi_DsBindInfo52_set_supported_extensions,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions")
+       },
+       {
+               .name = discard_const_p(char, "site_guid"),
+               .get = py_drsuapi_DsBindInfo52_get_site_guid,
+               .set = py_drsuapi_DsBindInfo52_set_site_guid,
+               .doc = discard_const_p(char, "PIDL-generated element site_guid")
+       },
+       {
+               .name = discard_const_p(char, "pid"),
+               .get = py_drsuapi_DsBindInfo52_get_pid,
+               .set = py_drsuapi_DsBindInfo52_set_pid,
+               .doc = discard_const_p(char, "PIDL-generated element pid")
+       },
+       {
+               .name = discard_const_p(char, "repl_epoch"),
+               .get = py_drsuapi_DsBindInfo52_get_repl_epoch,
+               .set = py_drsuapi_DsBindInfo52_set_repl_epoch,
+               .doc = discard_const_p(char, "PIDL-generated element repl_epoch")
+       },
+       {
+               .name = discard_const_p(char, "supported_extensions_ext"),
+               .get = py_drsuapi_DsBindInfo52_get_supported_extensions_ext,
+               .set = py_drsuapi_DsBindInfo52_set_supported_extensions_ext,
+               .doc = discard_const_p(char, "PIDL-generated element supported_extensions_ext")
+       },
+       {
+               .name = discard_const_p(char, "config_dn_guid"),
+               .get = py_drsuapi_DsBindInfo52_get_config_dn_guid,
+               .set = py_drsuapi_DsBindInfo52_set_config_dn_guid,
+               .doc = discard_const_p(char, "PIDL-generated element config_dn_guid")
+       },
+       {
+               .name = discard_const_p(char, "supported_capabilities_ext"),
+               .get = py_drsuapi_DsBindInfo52_get_supported_capabilities_ext,
+               .set = py_drsuapi_DsBindInfo52_set_supported_capabilities_ext,
+               .doc = discard_const_p(char, "PIDL-generated element supported_capabilities_ext")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsBindInfo52_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -1568,22 +1826,31 @@ static PyObject *py_drsuapi_DsBindInfo52_new(PyTypeObject *type, PyObject *args,
 static PyObject *py_drsuapi_DsBindInfo52_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo52);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfo52);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsBindInfo52_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsBindInfo52 *object = (struct drsuapi_DsBindInfo52 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -1641,7 +1908,6 @@ static PyTypeObject drsuapi_DsBindInfo52_Type = {
        .tp_getset = py_drsuapi_DsBindInfo52_getsetters,
        .tp_methods = py_drsuapi_DsBindInfo52_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsBindInfo52_new,
 };
 
@@ -1657,13 +1923,22 @@ static PyObject *py_drsuapi_DsBindInfoFallBack_get_info(PyObject *obj, void *clo
 static int py_drsuapi_DsBindInfoFallBack_set_info(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfoFallBack *object = (struct drsuapi_DsBindInfoFallBack *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info");
+               return -1;
+       }
        object->info = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsBindInfoFallBack_getsetters[] = {
-       { discard_const_p(char, "info"), py_drsuapi_DsBindInfoFallBack_get_info, py_drsuapi_DsBindInfoFallBack_set_info },
-       { NULL }
+       {
+               .name = discard_const_p(char, "info"),
+               .get = py_drsuapi_DsBindInfoFallBack_get_info,
+               .set = py_drsuapi_DsBindInfoFallBack_set_info,
+               .doc = discard_const_p(char, "PIDL-generated element info")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsBindInfoFallBack_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -1674,22 +1949,31 @@ static PyObject *py_drsuapi_DsBindInfoFallBack_new(PyTypeObject *type, PyObject
 static PyObject *py_drsuapi_DsBindInfoFallBack_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsBindInfoFallBack *object = (struct drsuapi_DsBindInfoFallBack *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfoFallBack);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsBindInfoFallBack);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsBindInfoFallBack_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsBindInfoFallBack *object = (struct drsuapi_DsBindInfoFallBack *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -1747,7 +2031,6 @@ static PyTypeObject drsuapi_DsBindInfoFallBack_Type = {
        .tp_getset = py_drsuapi_DsBindInfoFallBack_getsetters,
        .tp_methods = py_drsuapi_DsBindInfoFallBack_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsBindInfoFallBack_new,
 };
 
@@ -1790,6 +2073,14 @@ union drsuapi_DsBindInfo *py_export_drsuapi_DsBindInfo(TALLOC_CTX *mem_ctx, int
        union drsuapi_DsBindInfo *ret = talloc_zero(mem_ctx, union drsuapi_DsBindInfo);
        switch (level) {
                case 24:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info24");
+                               talloc_free(ret); return NULL;
+                       }
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info24");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsBindInfo24_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -1799,6 +2090,14 @@ union drsuapi_DsBindInfo *py_export_drsuapi_DsBindInfo(TALLOC_CTX *mem_ctx, int
                        break;
 
                case 28:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info28");
+                               talloc_free(ret); return NULL;
+                       }
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info28");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsBindInfo28_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -1808,6 +2107,14 @@ union drsuapi_DsBindInfo *py_export_drsuapi_DsBindInfo(TALLOC_CTX *mem_ctx, int
                        break;
 
                case 32:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info32");
+                               talloc_free(ret); return NULL;
+                       }
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info32");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsBindInfo32_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -1817,6 +2124,14 @@ union drsuapi_DsBindInfo *py_export_drsuapi_DsBindInfo(TALLOC_CTX *mem_ctx, int
                        break;
 
                case 48:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info48");
+                               talloc_free(ret); return NULL;
+                       }
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info48");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsBindInfo48_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -1826,6 +2141,14 @@ union drsuapi_DsBindInfo *py_export_drsuapi_DsBindInfo(TALLOC_CTX *mem_ctx, int
                        break;
 
                case 52:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info52");
+                               talloc_free(ret); return NULL;
+                       }
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info52");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsBindInfo52_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -1835,6 +2158,14 @@ union drsuapi_DsBindInfo *py_export_drsuapi_DsBindInfo(TALLOC_CTX *mem_ctx, int
                        break;
 
                default:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->Fallback");
+                               talloc_free(ret); return NULL;
+                       }
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->Fallback");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsBindInfoFallBack_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -1860,6 +2191,10 @@ static PyObject *py_drsuapi_DsBindInfoCtr_get_length(PyObject *obj, void *closur
 static int py_drsuapi_DsBindInfoCtr_set_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfoCtr *object = (struct drsuapi_DsBindInfoCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->length));
                if (PyLong_Check(value)) {
@@ -1903,6 +2238,10 @@ static PyObject *py_drsuapi_DsBindInfoCtr_get___ndr_length(PyObject *obj, void *
 static int py_drsuapi_DsBindInfoCtr_set___ndr_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfoCtr *object = (struct drsuapi_DsBindInfoCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_length));
                if (PyLong_Check(value)) {
@@ -1949,6 +2288,10 @@ static PyObject *py_drsuapi_DsBindInfoCtr_get_info(PyObject *obj, void *closure)
 static int py_drsuapi_DsBindInfoCtr_set_info(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsBindInfoCtr *object = (struct drsuapi_DsBindInfoCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info");
+               return -1;
+       }
        {
                union drsuapi_DsBindInfo *info_switch_0;
                info_switch_0 = py_export_drsuapi_DsBindInfo(pytalloc_get_mem_ctx(py_obj), object->length, value);
@@ -1961,10 +2304,25 @@ static int py_drsuapi_DsBindInfoCtr_set_info(PyObject *py_obj, PyObject *value,
 }
 
 static PyGetSetDef py_drsuapi_DsBindInfoCtr_getsetters[] = {
-       { discard_const_p(char, "length"), py_drsuapi_DsBindInfoCtr_get_length, py_drsuapi_DsBindInfoCtr_set_length },
-       { discard_const_p(char, "__ndr_length"), py_drsuapi_DsBindInfoCtr_get___ndr_length, py_drsuapi_DsBindInfoCtr_set___ndr_length },
-       { discard_const_p(char, "info"), py_drsuapi_DsBindInfoCtr_get_info, py_drsuapi_DsBindInfoCtr_set_info },
-       { NULL }
+       {
+               .name = discard_const_p(char, "length"),
+               .get = py_drsuapi_DsBindInfoCtr_get_length,
+               .set = py_drsuapi_DsBindInfoCtr_set_length,
+               .doc = discard_const_p(char, "PIDL-generated element length")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_length"),
+               .get = py_drsuapi_DsBindInfoCtr_get___ndr_length,
+               .set = py_drsuapi_DsBindInfoCtr_set___ndr_length,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_length")
+       },
+       {
+               .name = discard_const_p(char, "info"),
+               .get = py_drsuapi_DsBindInfoCtr_get_info,
+               .set = py_drsuapi_DsBindInfoCtr_set_info,
+               .doc = discard_const_p(char, "PIDL-generated element info")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsBindInfoCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -1979,7 +2337,6 @@ static PyTypeObject drsuapi_DsBindInfoCtr_Type = {
        .tp_getset = py_drsuapi_DsBindInfoCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsBindInfoCtr_new,
 };
 
@@ -1995,6 +2352,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size(PyObject *o
 static int py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size));
                if (PyLong_Check(value)) {
@@ -2038,6 +2399,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size_sid(PyObjec
 static int py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size_sid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_sid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_sid));
                if (PyLong_Check(value)) {
@@ -2081,6 +2446,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier_get_guid(PyObject *obj, vo
 static int py_drsuapi_DsReplicaObjectIdentifier_set_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -2101,6 +2470,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier_get_sid(PyObject *obj, voi
 static int py_drsuapi_DsReplicaObjectIdentifier_set_sid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sid");
+               return -1;
+       }
        PY_CHECK_TYPE(dom_sid_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -2121,6 +2494,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size_dn(PyObject
 static int py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_dn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_dn));
                if (PyLong_Check(value)) {
@@ -2169,25 +2546,78 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier_get_dn(PyObject *obj, void
 static int py_drsuapi_DsReplicaObjectIdentifier_set_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
-       if (PyUnicode_Check(value)) {
-               object->dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-       } else if (PyString_Check(value)) {
-               object->dn = PyString_AS_STRING(value);
-       } else {
-               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dn");
                return -1;
        }
+       {
+               const char *test_str;
+               const char *talloc_str;
+               PyObject *unicode = NULL;
+               if (PyUnicode_Check(value)) {
+                       unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                       if (unicode == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       test_str = PyString_AS_STRING(unicode);
+               } else if (PyString_Check(value)) {
+                       test_str = PyString_AS_STRING(value);
+               } else {
+                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                       return -1;
+               }
+               talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+               if (unicode != NULL) {
+                       Py_DECREF(unicode);
+               }
+               if (talloc_str == NULL) {
+                       PyErr_NoMemory();
+                       return -1;
+               }
+               object->dn = talloc_str;
+       }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjectIdentifier_getsetters[] = {
-       { discard_const_p(char, "__ndr_size"), py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size, py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size },
-       { discard_const_p(char, "__ndr_size_sid"), py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size_sid, py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size_sid },
-       { discard_const_p(char, "guid"), py_drsuapi_DsReplicaObjectIdentifier_get_guid, py_drsuapi_DsReplicaObjectIdentifier_set_guid },
-       { discard_const_p(char, "sid"), py_drsuapi_DsReplicaObjectIdentifier_get_sid, py_drsuapi_DsReplicaObjectIdentifier_set_sid },
-       { discard_const_p(char, "__ndr_size_dn"), py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size_dn, py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size_dn },
-       { discard_const_p(char, "dn"), py_drsuapi_DsReplicaObjectIdentifier_get_dn, py_drsuapi_DsReplicaObjectIdentifier_set_dn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "__ndr_size"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size,
+               .set = py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_sid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size_sid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size_sid,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_sid")
+       },
+       {
+               .name = discard_const_p(char, "guid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier_get_guid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier_set_guid,
+               .doc = discard_const_p(char, "PIDL-generated element guid")
+       },
+       {
+               .name = discard_const_p(char, "sid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier_get_sid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier_set_sid,
+               .doc = discard_const_p(char, "PIDL-generated element sid")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_dn"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier_get___ndr_size_dn,
+               .set = py_drsuapi_DsReplicaObjectIdentifier_set___ndr_size_dn,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_dn")
+       },
+       {
+               .name = discard_const_p(char, "dn"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier_get_dn,
+               .set = py_drsuapi_DsReplicaObjectIdentifier_set_dn,
+               .doc = discard_const_p(char, "PIDL-generated element dn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -2198,22 +2628,31 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier_new(PyTypeObject *type, Py
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaObjectIdentifier *object = (struct drsuapi_DsReplicaObjectIdentifier *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -2271,7 +2710,6 @@ static PyTypeObject drsuapi_DsReplicaObjectIdentifier_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjectIdentifier_getsetters,
        .tp_methods = py_drsuapi_DsReplicaObjectIdentifier_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjectIdentifier_new,
 };
 
@@ -2288,7 +2726,15 @@ static int py_drsuapi_DsReplicaSyncRequest1_set_naming_context(PyObject *py_obj,
 {
        struct drsuapi_DsReplicaSyncRequest1 *object = (struct drsuapi_DsReplicaSyncRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -2309,6 +2755,10 @@ static PyObject *py_drsuapi_DsReplicaSyncRequest1_get_source_dsa_guid(PyObject *
 static int py_drsuapi_DsReplicaSyncRequest1_set_source_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaSyncRequest1 *object = (struct drsuapi_DsReplicaSyncRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -2339,18 +2789,45 @@ static PyObject *py_drsuapi_DsReplicaSyncRequest1_get_source_dsa_dns(PyObject *o
 static int py_drsuapi_DsReplicaSyncRequest1_set_source_dsa_dns(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaSyncRequest1 *object = (struct drsuapi_DsReplicaSyncRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_dns");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_dns = NULL;
        } else {
                object->source_dsa_dns = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dsa_dns = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dsa_dns = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_dns");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dsa_dns = talloc_str;
+               }
        }
        return 0;
 }
@@ -2366,6 +2843,10 @@ static PyObject *py_drsuapi_DsReplicaSyncRequest1_get_options(PyObject *obj, voi
 static int py_drsuapi_DsReplicaSyncRequest1_set_options(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaSyncRequest1 *object = (struct drsuapi_DsReplicaSyncRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->options");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->options));
                if (PyLong_Check(value)) {
@@ -2399,11 +2880,31 @@ static int py_drsuapi_DsReplicaSyncRequest1_set_options(PyObject *py_obj, PyObje
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaSyncRequest1_getsetters[] = {
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsReplicaSyncRequest1_get_naming_context, py_drsuapi_DsReplicaSyncRequest1_set_naming_context },
-       { discard_const_p(char, "source_dsa_guid"), py_drsuapi_DsReplicaSyncRequest1_get_source_dsa_guid, py_drsuapi_DsReplicaSyncRequest1_set_source_dsa_guid },
-       { discard_const_p(char, "source_dsa_dns"), py_drsuapi_DsReplicaSyncRequest1_get_source_dsa_dns, py_drsuapi_DsReplicaSyncRequest1_set_source_dsa_dns },
-       { discard_const_p(char, "options"), py_drsuapi_DsReplicaSyncRequest1_get_options, py_drsuapi_DsReplicaSyncRequest1_set_options },
-       { NULL }
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsReplicaSyncRequest1_get_naming_context,
+               .set = py_drsuapi_DsReplicaSyncRequest1_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_guid"),
+               .get = py_drsuapi_DsReplicaSyncRequest1_get_source_dsa_guid,
+               .set = py_drsuapi_DsReplicaSyncRequest1_set_source_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_dns"),
+               .get = py_drsuapi_DsReplicaSyncRequest1_get_source_dsa_dns,
+               .set = py_drsuapi_DsReplicaSyncRequest1_set_source_dsa_dns,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_dns")
+       },
+       {
+               .name = discard_const_p(char, "options"),
+               .get = py_drsuapi_DsReplicaSyncRequest1_get_options,
+               .set = py_drsuapi_DsReplicaSyncRequest1_set_options,
+               .doc = discard_const_p(char, "PIDL-generated element options")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaSyncRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -2418,7 +2919,6 @@ static PyTypeObject drsuapi_DsReplicaSyncRequest1_Type = {
        .tp_getset = py_drsuapi_DsReplicaSyncRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaSyncRequest1_new,
 };
 
@@ -2441,6 +2941,10 @@ union drsuapi_DsReplicaSyncRequest *py_export_drsuapi_DsReplicaSyncRequest(TALLO
        union drsuapi_DsReplicaSyncRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsReplicaSyncRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaSyncRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -2470,6 +2974,10 @@ static PyObject *py_drsuapi_DsReplicaHighWaterMark_get_tmp_highest_usn(PyObject
 static int py_drsuapi_DsReplicaHighWaterMark_set_tmp_highest_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaHighWaterMark *object = (struct drsuapi_DsReplicaHighWaterMark *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->tmp_highest_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->tmp_highest_usn));
                if (PyLong_Check(value)) {
@@ -2513,6 +3021,10 @@ static PyObject *py_drsuapi_DsReplicaHighWaterMark_get_reserved_usn(PyObject *ob
 static int py_drsuapi_DsReplicaHighWaterMark_set_reserved_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaHighWaterMark *object = (struct drsuapi_DsReplicaHighWaterMark *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved_usn));
                if (PyLong_Check(value)) {
@@ -2556,6 +3068,10 @@ static PyObject *py_drsuapi_DsReplicaHighWaterMark_get_highest_usn(PyObject *obj
 static int py_drsuapi_DsReplicaHighWaterMark_set_highest_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaHighWaterMark *object = (struct drsuapi_DsReplicaHighWaterMark *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highest_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->highest_usn));
                if (PyLong_Check(value)) {
@@ -2589,10 +3105,25 @@ static int py_drsuapi_DsReplicaHighWaterMark_set_highest_usn(PyObject *py_obj, P
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaHighWaterMark_getsetters[] = {
-       { discard_const_p(char, "tmp_highest_usn"), py_drsuapi_DsReplicaHighWaterMark_get_tmp_highest_usn, py_drsuapi_DsReplicaHighWaterMark_set_tmp_highest_usn },
-       { discard_const_p(char, "reserved_usn"), py_drsuapi_DsReplicaHighWaterMark_get_reserved_usn, py_drsuapi_DsReplicaHighWaterMark_set_reserved_usn },
-       { discard_const_p(char, "highest_usn"), py_drsuapi_DsReplicaHighWaterMark_get_highest_usn, py_drsuapi_DsReplicaHighWaterMark_set_highest_usn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "tmp_highest_usn"),
+               .get = py_drsuapi_DsReplicaHighWaterMark_get_tmp_highest_usn,
+               .set = py_drsuapi_DsReplicaHighWaterMark_set_tmp_highest_usn,
+               .doc = discard_const_p(char, "PIDL-generated element tmp_highest_usn")
+       },
+       {
+               .name = discard_const_p(char, "reserved_usn"),
+               .get = py_drsuapi_DsReplicaHighWaterMark_get_reserved_usn,
+               .set = py_drsuapi_DsReplicaHighWaterMark_set_reserved_usn,
+               .doc = discard_const_p(char, "PIDL-generated element reserved_usn")
+       },
+       {
+               .name = discard_const_p(char, "highest_usn"),
+               .get = py_drsuapi_DsReplicaHighWaterMark_get_highest_usn,
+               .set = py_drsuapi_DsReplicaHighWaterMark_set_highest_usn,
+               .doc = discard_const_p(char, "PIDL-generated element highest_usn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaHighWaterMark_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -2603,22 +3134,31 @@ static PyObject *py_drsuapi_DsReplicaHighWaterMark_new(PyTypeObject *type, PyObj
 static PyObject *py_drsuapi_DsReplicaHighWaterMark_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaHighWaterMark *object = (struct drsuapi_DsReplicaHighWaterMark *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaHighWaterMark);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaHighWaterMark);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaHighWaterMark_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaHighWaterMark *object = (struct drsuapi_DsReplicaHighWaterMark *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -2676,7 +3216,6 @@ static PyTypeObject drsuapi_DsReplicaHighWaterMark_Type = {
        .tp_getset = py_drsuapi_DsReplicaHighWaterMark_getsetters,
        .tp_methods = py_drsuapi_DsReplicaHighWaterMark_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaHighWaterMark_new,
 };
 
@@ -2692,6 +3231,10 @@ static PyObject *py_drsuapi_DsReplicaCursor_get_source_dsa_invocation_id(PyObjec
 static int py_drsuapi_DsReplicaCursor_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor *object = (struct drsuapi_DsReplicaCursor *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -2712,6 +3255,10 @@ static PyObject *py_drsuapi_DsReplicaCursor_get_highest_usn(PyObject *obj, void
 static int py_drsuapi_DsReplicaCursor_set_highest_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor *object = (struct drsuapi_DsReplicaCursor *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highest_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->highest_usn));
                if (PyLong_Check(value)) {
@@ -2745,9 +3292,19 @@ static int py_drsuapi_DsReplicaCursor_set_highest_usn(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursor_getsetters[] = {
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsReplicaCursor_get_source_dsa_invocation_id, py_drsuapi_DsReplicaCursor_set_source_dsa_invocation_id },
-       { discard_const_p(char, "highest_usn"), py_drsuapi_DsReplicaCursor_get_highest_usn, py_drsuapi_DsReplicaCursor_set_highest_usn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsReplicaCursor_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsReplicaCursor_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "highest_usn"),
+               .get = py_drsuapi_DsReplicaCursor_get_highest_usn,
+               .set = py_drsuapi_DsReplicaCursor_set_highest_usn,
+               .doc = discard_const_p(char, "PIDL-generated element highest_usn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursor_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -2758,22 +3315,31 @@ static PyObject *py_drsuapi_DsReplicaCursor_new(PyTypeObject *type, PyObject *ar
 static PyObject *py_drsuapi_DsReplicaCursor_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaCursor *object = (struct drsuapi_DsReplicaCursor *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaCursor);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaCursor);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaCursor_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaCursor *object = (struct drsuapi_DsReplicaCursor *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -2831,7 +3397,6 @@ static PyTypeObject drsuapi_DsReplicaCursor_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursor_getsetters,
        .tp_methods = py_drsuapi_DsReplicaCursor_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursor_new,
 };
 
@@ -2847,6 +3412,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtrEx_get_version(PyObject *obj, void
 static int py_drsuapi_DsReplicaCursorCtrEx_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtrEx *object = (struct drsuapi_DsReplicaCursorCtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -2890,6 +3459,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtrEx_get_reserved1(PyObject *obj, vo
 static int py_drsuapi_DsReplicaCursorCtrEx_set_reserved1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtrEx *object = (struct drsuapi_DsReplicaCursorCtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved1");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved1));
                if (PyLong_Check(value)) {
@@ -2933,6 +3506,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtrEx_get_count(PyObject *obj, void *
 static int py_drsuapi_DsReplicaCursorCtrEx_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtrEx *object = (struct drsuapi_DsReplicaCursorCtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -2976,6 +3553,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtrEx_get_reserved2(PyObject *obj, vo
 static int py_drsuapi_DsReplicaCursorCtrEx_set_reserved2(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtrEx *object = (struct drsuapi_DsReplicaCursorCtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved2");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved2));
                if (PyLong_Check(value)) {
@@ -3030,6 +3611,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtrEx_get_cursors(PyObject *obj, void
 static int py_drsuapi_DsReplicaCursorCtrEx_set_cursors(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtrEx *object = (struct drsuapi_DsReplicaCursorCtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->cursors");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int cursors_cntr_0;
@@ -3037,6 +3622,10 @@ static int py_drsuapi_DsReplicaCursorCtrEx_set_cursors(PyObject *py_obj, PyObjec
                if (!object->cursors) { return -1;; }
                talloc_set_name_const(object->cursors, "ARRAY: object->cursors");
                for (cursors_cntr_0 = 0; cursors_cntr_0 < PyList_GET_SIZE(value); cursors_cntr_0++) {
+                       if (PyList_GET_ITEM(value, cursors_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->cursors[cursors_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaCursor_Type, PyList_GET_ITEM(value, cursors_cntr_0), return -1;);
                        if (talloc_reference(object->cursors, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, cursors_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -3049,12 +3638,37 @@ static int py_drsuapi_DsReplicaCursorCtrEx_set_cursors(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursorCtrEx_getsetters[] = {
-       { discard_const_p(char, "version"), py_drsuapi_DsReplicaCursorCtrEx_get_version, py_drsuapi_DsReplicaCursorCtrEx_set_version },
-       { discard_const_p(char, "reserved1"), py_drsuapi_DsReplicaCursorCtrEx_get_reserved1, py_drsuapi_DsReplicaCursorCtrEx_set_reserved1 },
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaCursorCtrEx_get_count, py_drsuapi_DsReplicaCursorCtrEx_set_count },
-       { discard_const_p(char, "reserved2"), py_drsuapi_DsReplicaCursorCtrEx_get_reserved2, py_drsuapi_DsReplicaCursorCtrEx_set_reserved2 },
-       { discard_const_p(char, "cursors"), py_drsuapi_DsReplicaCursorCtrEx_get_cursors, py_drsuapi_DsReplicaCursorCtrEx_set_cursors },
-       { NULL }
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsReplicaCursorCtrEx_get_version,
+               .set = py_drsuapi_DsReplicaCursorCtrEx_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "reserved1"),
+               .get = py_drsuapi_DsReplicaCursorCtrEx_get_reserved1,
+               .set = py_drsuapi_DsReplicaCursorCtrEx_set_reserved1,
+               .doc = discard_const_p(char, "PIDL-generated element reserved1")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaCursorCtrEx_get_count,
+               .set = py_drsuapi_DsReplicaCursorCtrEx_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved2"),
+               .get = py_drsuapi_DsReplicaCursorCtrEx_get_reserved2,
+               .set = py_drsuapi_DsReplicaCursorCtrEx_set_reserved2,
+               .doc = discard_const_p(char, "PIDL-generated element reserved2")
+       },
+       {
+               .name = discard_const_p(char, "cursors"),
+               .get = py_drsuapi_DsReplicaCursorCtrEx_get_cursors,
+               .set = py_drsuapi_DsReplicaCursorCtrEx_set_cursors,
+               .doc = discard_const_p(char, "PIDL-generated element cursors")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursorCtrEx_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -3069,7 +3683,6 @@ static PyTypeObject drsuapi_DsReplicaCursorCtrEx_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursorCtrEx_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursorCtrEx_new,
 };
 
@@ -3085,6 +3698,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_destination_dsa_guid(PyOb
 static int py_drsuapi_DsGetNCChangesRequest5_set_destination_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->destination_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -3105,6 +3722,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_source_dsa_invocation_id(
 static int py_drsuapi_DsGetNCChangesRequest5_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -3126,7 +3747,15 @@ static int py_drsuapi_DsGetNCChangesRequest5_set_naming_context(PyObject *py_obj
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -3147,6 +3776,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_highwatermark(PyObject *o
 static int py_drsuapi_DsGetNCChangesRequest5_set_highwatermark(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highwatermark");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaHighWaterMark_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -3173,10 +3806,18 @@ static int py_drsuapi_DsGetNCChangesRequest5_set_uptodateness_vector(PyObject *p
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->uptodateness_vector));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->uptodateness_vector");
+               return -1;
+       }
        if (value == Py_None) {
                object->uptodateness_vector = NULL;
        } else {
                object->uptodateness_vector = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->uptodateness_vector");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaCursorCtrEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -3198,6 +3839,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_replica_flags(PyObject *o
 static int py_drsuapi_DsGetNCChangesRequest5_set_replica_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->replica_flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->replica_flags));
                if (PyLong_Check(value)) {
@@ -3241,6 +3886,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_max_object_count(PyObject
 static int py_drsuapi_DsGetNCChangesRequest5_set_max_object_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->max_object_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->max_object_count));
                if (PyLong_Check(value)) {
@@ -3284,6 +3933,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_max_ndr_size(PyObject *ob
 static int py_drsuapi_DsGetNCChangesRequest5_set_max_ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->max_ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->max_ndr_size));
                if (PyLong_Check(value)) {
@@ -3327,6 +3980,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_extended_op(PyObject *obj
 static int py_drsuapi_DsGetNCChangesRequest5_set_extended_op(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_op");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_op));
                if (PyLong_Check(value)) {
@@ -3370,6 +4027,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest5_get_fsmo_info(PyObject *obj,
 static int py_drsuapi_DsGetNCChangesRequest5_set_fsmo_info(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest5 *object = (struct drsuapi_DsGetNCChangesRequest5 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->fsmo_info");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->fsmo_info));
                if (PyLong_Check(value)) {
@@ -3403,17 +4064,67 @@ static int py_drsuapi_DsGetNCChangesRequest5_set_fsmo_info(PyObject *py_obj, PyO
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesRequest5_getsetters[] = {
-       { discard_const_p(char, "destination_dsa_guid"), py_drsuapi_DsGetNCChangesRequest5_get_destination_dsa_guid, py_drsuapi_DsGetNCChangesRequest5_set_destination_dsa_guid },
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsGetNCChangesRequest5_get_source_dsa_invocation_id, py_drsuapi_DsGetNCChangesRequest5_set_source_dsa_invocation_id },
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsGetNCChangesRequest5_get_naming_context, py_drsuapi_DsGetNCChangesRequest5_set_naming_context },
-       { discard_const_p(char, "highwatermark"), py_drsuapi_DsGetNCChangesRequest5_get_highwatermark, py_drsuapi_DsGetNCChangesRequest5_set_highwatermark },
-       { discard_const_p(char, "uptodateness_vector"), py_drsuapi_DsGetNCChangesRequest5_get_uptodateness_vector, py_drsuapi_DsGetNCChangesRequest5_set_uptodateness_vector },
-       { discard_const_p(char, "replica_flags"), py_drsuapi_DsGetNCChangesRequest5_get_replica_flags, py_drsuapi_DsGetNCChangesRequest5_set_replica_flags },
-       { discard_const_p(char, "max_object_count"), py_drsuapi_DsGetNCChangesRequest5_get_max_object_count, py_drsuapi_DsGetNCChangesRequest5_set_max_object_count },
-       { discard_const_p(char, "max_ndr_size"), py_drsuapi_DsGetNCChangesRequest5_get_max_ndr_size, py_drsuapi_DsGetNCChangesRequest5_set_max_ndr_size },
-       { discard_const_p(char, "extended_op"), py_drsuapi_DsGetNCChangesRequest5_get_extended_op, py_drsuapi_DsGetNCChangesRequest5_set_extended_op },
-       { discard_const_p(char, "fsmo_info"), py_drsuapi_DsGetNCChangesRequest5_get_fsmo_info, py_drsuapi_DsGetNCChangesRequest5_set_fsmo_info },
-       { NULL }
+       {
+               .name = discard_const_p(char, "destination_dsa_guid"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_destination_dsa_guid,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_destination_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element destination_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_naming_context,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "highwatermark"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_highwatermark,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_highwatermark,
+               .doc = discard_const_p(char, "PIDL-generated element highwatermark")
+       },
+       {
+               .name = discard_const_p(char, "uptodateness_vector"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_uptodateness_vector,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_uptodateness_vector,
+               .doc = discard_const_p(char, "PIDL-generated element uptodateness_vector")
+       },
+       {
+               .name = discard_const_p(char, "replica_flags"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_replica_flags,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_replica_flags,
+               .doc = discard_const_p(char, "PIDL-generated element replica_flags")
+       },
+       {
+               .name = discard_const_p(char, "max_object_count"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_max_object_count,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_max_object_count,
+               .doc = discard_const_p(char, "PIDL-generated element max_object_count")
+       },
+       {
+               .name = discard_const_p(char, "max_ndr_size"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_max_ndr_size,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_max_ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element max_ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "extended_op"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_extended_op,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_extended_op,
+               .doc = discard_const_p(char, "PIDL-generated element extended_op")
+       },
+       {
+               .name = discard_const_p(char, "fsmo_info"),
+               .get = py_drsuapi_DsGetNCChangesRequest5_get_fsmo_info,
+               .set = py_drsuapi_DsGetNCChangesRequest5_set_fsmo_info,
+               .doc = discard_const_p(char, "PIDL-generated element fsmo_info")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesRequest5_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -3428,7 +4139,6 @@ static PyTypeObject drsuapi_DsGetNCChangesRequest5_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesRequest5_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesRequest5_new,
 };
 
@@ -3444,6 +4154,10 @@ static PyObject *py_drsuapi_DsReplicaOID_get_length(PyObject *obj, void *closure
 static int py_drsuapi_DsReplicaOID_set_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOID *object = (struct drsuapi_DsReplicaOID *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->length));
                if (PyLong_Check(value)) {
@@ -3504,10 +4218,18 @@ static int py_drsuapi_DsReplicaOID_set_binary_oid(PyObject *py_obj, PyObject *va
 {
        struct drsuapi_DsReplicaOID *object = (struct drsuapi_DsReplicaOID *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->binary_oid));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->binary_oid");
+               return -1;
+       }
        if (value == Py_None) {
                object->binary_oid = NULL;
        } else {
                object->binary_oid = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->binary_oid");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int binary_oid_cntr_1;
@@ -3515,6 +4237,10 @@ static int py_drsuapi_DsReplicaOID_set_binary_oid(PyObject *py_obj, PyObject *va
                        if (!object->binary_oid) { return -1;; }
                        talloc_set_name_const(object->binary_oid, "ARRAY: object->binary_oid");
                        for (binary_oid_cntr_1 = 0; binary_oid_cntr_1 < PyList_GET_SIZE(value); binary_oid_cntr_1++) {
+                               if (PyList_GET_ITEM(value, binary_oid_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->binary_oid[binary_oid_cntr_1]");
+                                       return -1;
+                               }
                                {
                                        const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->binary_oid[binary_oid_cntr_1]));
                                        if (PyLong_Check(PyList_GET_ITEM(value, binary_oid_cntr_1))) {
@@ -3551,9 +4277,19 @@ static int py_drsuapi_DsReplicaOID_set_binary_oid(PyObject *py_obj, PyObject *va
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaOID_getsetters[] = {
-       { discard_const_p(char, "length"), py_drsuapi_DsReplicaOID_get_length, py_drsuapi_DsReplicaOID_set_length },
-       { discard_const_p(char, "binary_oid"), py_drsuapi_DsReplicaOID_get_binary_oid, py_drsuapi_DsReplicaOID_set_binary_oid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "length"),
+               .get = py_drsuapi_DsReplicaOID_get_length,
+               .set = py_drsuapi_DsReplicaOID_set_length,
+               .doc = discard_const_p(char, "PIDL-generated element length")
+       },
+       {
+               .name = discard_const_p(char, "binary_oid"),
+               .get = py_drsuapi_DsReplicaOID_get_binary_oid,
+               .set = py_drsuapi_DsReplicaOID_set_binary_oid,
+               .doc = discard_const_p(char, "PIDL-generated element binary_oid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaOID_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -3568,7 +4304,6 @@ static PyTypeObject drsuapi_DsReplicaOID_Type = {
        .tp_getset = py_drsuapi_DsReplicaOID_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaOID_new,
 };
 
@@ -3584,6 +4319,10 @@ static PyObject *py_drsuapi_DsReplicaOIDMapping_get_id_prefix(PyObject *obj, voi
 static int py_drsuapi_DsReplicaOIDMapping_set_id_prefix(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOIDMapping *object = (struct drsuapi_DsReplicaOIDMapping *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->id_prefix");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->id_prefix));
                if (PyLong_Check(value)) {
@@ -3627,6 +4366,10 @@ static PyObject *py_drsuapi_DsReplicaOIDMapping_get_oid(PyObject *obj, void *clo
 static int py_drsuapi_DsReplicaOIDMapping_set_oid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOIDMapping *object = (struct drsuapi_DsReplicaOIDMapping *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->oid");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaOID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -3637,9 +4380,19 @@ static int py_drsuapi_DsReplicaOIDMapping_set_oid(PyObject *py_obj, PyObject *va
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaOIDMapping_getsetters[] = {
-       { discard_const_p(char, "id_prefix"), py_drsuapi_DsReplicaOIDMapping_get_id_prefix, py_drsuapi_DsReplicaOIDMapping_set_id_prefix },
-       { discard_const_p(char, "oid"), py_drsuapi_DsReplicaOIDMapping_get_oid, py_drsuapi_DsReplicaOIDMapping_set_oid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "id_prefix"),
+               .get = py_drsuapi_DsReplicaOIDMapping_get_id_prefix,
+               .set = py_drsuapi_DsReplicaOIDMapping_set_id_prefix,
+               .doc = discard_const_p(char, "PIDL-generated element id_prefix")
+       },
+       {
+               .name = discard_const_p(char, "oid"),
+               .get = py_drsuapi_DsReplicaOIDMapping_get_oid,
+               .set = py_drsuapi_DsReplicaOIDMapping_set_oid,
+               .doc = discard_const_p(char, "PIDL-generated element oid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaOIDMapping_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -3654,7 +4407,6 @@ static PyTypeObject drsuapi_DsReplicaOIDMapping_Type = {
        .tp_getset = py_drsuapi_DsReplicaOIDMapping_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaOIDMapping_new,
 };
 
@@ -3670,6 +4422,10 @@ static PyObject *py_drsuapi_DsReplicaOIDMapping_Ctr_get_num_mappings(PyObject *o
 static int py_drsuapi_DsReplicaOIDMapping_Ctr_set_num_mappings(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOIDMapping_Ctr *object = (struct drsuapi_DsReplicaOIDMapping_Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_mappings");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_mappings));
                if (PyLong_Check(value)) {
@@ -3730,10 +4486,18 @@ static int py_drsuapi_DsReplicaOIDMapping_Ctr_set_mappings(PyObject *py_obj, PyO
 {
        struct drsuapi_DsReplicaOIDMapping_Ctr *object = (struct drsuapi_DsReplicaOIDMapping_Ctr *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->mappings));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mappings");
+               return -1;
+       }
        if (value == Py_None) {
                object->mappings = NULL;
        } else {
                object->mappings = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->mappings");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int mappings_cntr_1;
@@ -3741,6 +4505,10 @@ static int py_drsuapi_DsReplicaOIDMapping_Ctr_set_mappings(PyObject *py_obj, PyO
                        if (!object->mappings) { return -1;; }
                        talloc_set_name_const(object->mappings, "ARRAY: object->mappings");
                        for (mappings_cntr_1 = 0; mappings_cntr_1 < PyList_GET_SIZE(value); mappings_cntr_1++) {
+                               if (PyList_GET_ITEM(value, mappings_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mappings[mappings_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaOIDMapping_Type, PyList_GET_ITEM(value, mappings_cntr_1), return -1;);
                                if (talloc_reference(object->mappings, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, mappings_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -3754,9 +4522,19 @@ static int py_drsuapi_DsReplicaOIDMapping_Ctr_set_mappings(PyObject *py_obj, PyO
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaOIDMapping_Ctr_getsetters[] = {
-       { discard_const_p(char, "num_mappings"), py_drsuapi_DsReplicaOIDMapping_Ctr_get_num_mappings, py_drsuapi_DsReplicaOIDMapping_Ctr_set_num_mappings },
-       { discard_const_p(char, "mappings"), py_drsuapi_DsReplicaOIDMapping_Ctr_get_mappings, py_drsuapi_DsReplicaOIDMapping_Ctr_set_mappings },
-       { NULL }
+       {
+               .name = discard_const_p(char, "num_mappings"),
+               .get = py_drsuapi_DsReplicaOIDMapping_Ctr_get_num_mappings,
+               .set = py_drsuapi_DsReplicaOIDMapping_Ctr_set_num_mappings,
+               .doc = discard_const_p(char, "PIDL-generated element num_mappings")
+       },
+       {
+               .name = discard_const_p(char, "mappings"),
+               .get = py_drsuapi_DsReplicaOIDMapping_Ctr_get_mappings,
+               .set = py_drsuapi_DsReplicaOIDMapping_Ctr_set_mappings,
+               .doc = discard_const_p(char, "PIDL-generated element mappings")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaOIDMapping_Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -3767,22 +4545,31 @@ static PyObject *py_drsuapi_DsReplicaOIDMapping_Ctr_new(PyTypeObject *type, PyOb
 static PyObject *py_drsuapi_DsReplicaOIDMapping_Ctr_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaOIDMapping_Ctr *object = (struct drsuapi_DsReplicaOIDMapping_Ctr *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaOIDMapping_Ctr);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaOIDMapping_Ctr);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaOIDMapping_Ctr_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaOIDMapping_Ctr *object = (struct drsuapi_DsReplicaOIDMapping_Ctr *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -3840,7 +4627,6 @@ static PyTypeObject drsuapi_DsReplicaOIDMapping_Ctr_Type = {
        .tp_getset = py_drsuapi_DsReplicaOIDMapping_Ctr_getsetters,
        .tp_methods = py_drsuapi_DsReplicaOIDMapping_Ctr_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaOIDMapping_Ctr_new,
 };
 
@@ -3856,6 +4642,10 @@ static PyObject *py_drsuapi_DsPartialAttributeSet_get_version(PyObject *obj, voi
 static int py_drsuapi_DsPartialAttributeSet_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsPartialAttributeSet *object = (struct drsuapi_DsPartialAttributeSet *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -3899,6 +4689,10 @@ static PyObject *py_drsuapi_DsPartialAttributeSet_get_reserved1(PyObject *obj, v
 static int py_drsuapi_DsPartialAttributeSet_set_reserved1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsPartialAttributeSet *object = (struct drsuapi_DsPartialAttributeSet *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved1");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved1));
                if (PyLong_Check(value)) {
@@ -3942,6 +4736,10 @@ static PyObject *py_drsuapi_DsPartialAttributeSet_get_num_attids(PyObject *obj,
 static int py_drsuapi_DsPartialAttributeSet_set_num_attids(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsPartialAttributeSet *object = (struct drsuapi_DsPartialAttributeSet *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_attids");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_attids));
                if (PyLong_Check(value)) {
@@ -3996,6 +4794,10 @@ static PyObject *py_drsuapi_DsPartialAttributeSet_get_attids(PyObject *obj, void
 static int py_drsuapi_DsPartialAttributeSet_set_attids(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsPartialAttributeSet *object = (struct drsuapi_DsPartialAttributeSet *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attids");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int attids_cntr_0;
@@ -4003,6 +4805,10 @@ static int py_drsuapi_DsPartialAttributeSet_set_attids(PyObject *py_obj, PyObjec
                if (!object->attids) { return -1;; }
                talloc_set_name_const(object->attids, "ARRAY: object->attids");
                for (attids_cntr_0 = 0; attids_cntr_0 < PyList_GET_SIZE(value); attids_cntr_0++) {
+                       if (PyList_GET_ITEM(value, attids_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attids[attids_cntr_0]");
+                               return -1;
+                       }
                        {
                                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->attids[attids_cntr_0]));
                                if (PyLong_Check(PyList_GET_ITEM(value, attids_cntr_0))) {
@@ -4038,11 +4844,31 @@ static int py_drsuapi_DsPartialAttributeSet_set_attids(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsPartialAttributeSet_getsetters[] = {
-       { discard_const_p(char, "version"), py_drsuapi_DsPartialAttributeSet_get_version, py_drsuapi_DsPartialAttributeSet_set_version },
-       { discard_const_p(char, "reserved1"), py_drsuapi_DsPartialAttributeSet_get_reserved1, py_drsuapi_DsPartialAttributeSet_set_reserved1 },
-       { discard_const_p(char, "num_attids"), py_drsuapi_DsPartialAttributeSet_get_num_attids, py_drsuapi_DsPartialAttributeSet_set_num_attids },
-       { discard_const_p(char, "attids"), py_drsuapi_DsPartialAttributeSet_get_attids, py_drsuapi_DsPartialAttributeSet_set_attids },
-       { NULL }
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsPartialAttributeSet_get_version,
+               .set = py_drsuapi_DsPartialAttributeSet_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "reserved1"),
+               .get = py_drsuapi_DsPartialAttributeSet_get_reserved1,
+               .set = py_drsuapi_DsPartialAttributeSet_set_reserved1,
+               .doc = discard_const_p(char, "PIDL-generated element reserved1")
+       },
+       {
+               .name = discard_const_p(char, "num_attids"),
+               .get = py_drsuapi_DsPartialAttributeSet_get_num_attids,
+               .set = py_drsuapi_DsPartialAttributeSet_set_num_attids,
+               .doc = discard_const_p(char, "PIDL-generated element num_attids")
+       },
+       {
+               .name = discard_const_p(char, "attids"),
+               .get = py_drsuapi_DsPartialAttributeSet_get_attids,
+               .set = py_drsuapi_DsPartialAttributeSet_set_attids,
+               .doc = discard_const_p(char, "PIDL-generated element attids")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsPartialAttributeSet_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -4057,7 +4883,6 @@ static PyTypeObject drsuapi_DsPartialAttributeSet_Type = {
        .tp_getset = py_drsuapi_DsPartialAttributeSet_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsPartialAttributeSet_new,
 };
 
@@ -4073,6 +4898,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_destination_dsa_guid(PyOb
 static int py_drsuapi_DsGetNCChangesRequest8_set_destination_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->destination_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4093,6 +4922,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_source_dsa_invocation_id(
 static int py_drsuapi_DsGetNCChangesRequest8_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4114,7 +4947,15 @@ static int py_drsuapi_DsGetNCChangesRequest8_set_naming_context(PyObject *py_obj
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4135,6 +4976,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_highwatermark(PyObject *o
 static int py_drsuapi_DsGetNCChangesRequest8_set_highwatermark(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highwatermark");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaHighWaterMark_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4161,10 +5006,18 @@ static int py_drsuapi_DsGetNCChangesRequest8_set_uptodateness_vector(PyObject *p
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->uptodateness_vector));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->uptodateness_vector");
+               return -1;
+       }
        if (value == Py_None) {
                object->uptodateness_vector = NULL;
        } else {
                object->uptodateness_vector = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->uptodateness_vector");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaCursorCtrEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -4186,6 +5039,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_replica_flags(PyObject *o
 static int py_drsuapi_DsGetNCChangesRequest8_set_replica_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->replica_flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->replica_flags));
                if (PyLong_Check(value)) {
@@ -4229,6 +5086,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_max_object_count(PyObject
 static int py_drsuapi_DsGetNCChangesRequest8_set_max_object_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->max_object_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->max_object_count));
                if (PyLong_Check(value)) {
@@ -4272,6 +5133,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_max_ndr_size(PyObject *ob
 static int py_drsuapi_DsGetNCChangesRequest8_set_max_ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->max_ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->max_ndr_size));
                if (PyLong_Check(value)) {
@@ -4315,6 +5180,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_extended_op(PyObject *obj
 static int py_drsuapi_DsGetNCChangesRequest8_set_extended_op(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_op");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_op));
                if (PyLong_Check(value)) {
@@ -4358,6 +5227,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_fsmo_info(PyObject *obj,
 static int py_drsuapi_DsGetNCChangesRequest8_set_fsmo_info(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->fsmo_info");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->fsmo_info));
                if (PyLong_Check(value)) {
@@ -4407,10 +5280,18 @@ static int py_drsuapi_DsGetNCChangesRequest8_set_partial_attribute_set(PyObject
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->partial_attribute_set));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->partial_attribute_set");
+               return -1;
+       }
        if (value == Py_None) {
                object->partial_attribute_set = NULL;
        } else {
                object->partial_attribute_set = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->partial_attribute_set");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsPartialAttributeSet_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -4438,10 +5319,18 @@ static int py_drsuapi_DsGetNCChangesRequest8_set_partial_attribute_set_ex(PyObje
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->partial_attribute_set_ex));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->partial_attribute_set_ex");
+               return -1;
+       }
        if (value == Py_None) {
                object->partial_attribute_set_ex = NULL;
        } else {
                object->partial_attribute_set_ex = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->partial_attribute_set_ex");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsPartialAttributeSet_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -4463,6 +5352,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest8_get_mapping_ctr(PyObject *obj
 static int py_drsuapi_DsGetNCChangesRequest8_set_mapping_ctr(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest8 *object = (struct drsuapi_DsGetNCChangesRequest8 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mapping_ctr");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaOIDMapping_Ctr_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4473,20 +5366,85 @@ static int py_drsuapi_DsGetNCChangesRequest8_set_mapping_ctr(PyObject *py_obj, P
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesRequest8_getsetters[] = {
-       { discard_const_p(char, "destination_dsa_guid"), py_drsuapi_DsGetNCChangesRequest8_get_destination_dsa_guid, py_drsuapi_DsGetNCChangesRequest8_set_destination_dsa_guid },
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsGetNCChangesRequest8_get_source_dsa_invocation_id, py_drsuapi_DsGetNCChangesRequest8_set_source_dsa_invocation_id },
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsGetNCChangesRequest8_get_naming_context, py_drsuapi_DsGetNCChangesRequest8_set_naming_context },
-       { discard_const_p(char, "highwatermark"), py_drsuapi_DsGetNCChangesRequest8_get_highwatermark, py_drsuapi_DsGetNCChangesRequest8_set_highwatermark },
-       { discard_const_p(char, "uptodateness_vector"), py_drsuapi_DsGetNCChangesRequest8_get_uptodateness_vector, py_drsuapi_DsGetNCChangesRequest8_set_uptodateness_vector },
-       { discard_const_p(char, "replica_flags"), py_drsuapi_DsGetNCChangesRequest8_get_replica_flags, py_drsuapi_DsGetNCChangesRequest8_set_replica_flags },
-       { discard_const_p(char, "max_object_count"), py_drsuapi_DsGetNCChangesRequest8_get_max_object_count, py_drsuapi_DsGetNCChangesRequest8_set_max_object_count },
-       { discard_const_p(char, "max_ndr_size"), py_drsuapi_DsGetNCChangesRequest8_get_max_ndr_size, py_drsuapi_DsGetNCChangesRequest8_set_max_ndr_size },
-       { discard_const_p(char, "extended_op"), py_drsuapi_DsGetNCChangesRequest8_get_extended_op, py_drsuapi_DsGetNCChangesRequest8_set_extended_op },
-       { discard_const_p(char, "fsmo_info"), py_drsuapi_DsGetNCChangesRequest8_get_fsmo_info, py_drsuapi_DsGetNCChangesRequest8_set_fsmo_info },
-       { discard_const_p(char, "partial_attribute_set"), py_drsuapi_DsGetNCChangesRequest8_get_partial_attribute_set, py_drsuapi_DsGetNCChangesRequest8_set_partial_attribute_set },
-       { discard_const_p(char, "partial_attribute_set_ex"), py_drsuapi_DsGetNCChangesRequest8_get_partial_attribute_set_ex, py_drsuapi_DsGetNCChangesRequest8_set_partial_attribute_set_ex },
-       { discard_const_p(char, "mapping_ctr"), py_drsuapi_DsGetNCChangesRequest8_get_mapping_ctr, py_drsuapi_DsGetNCChangesRequest8_set_mapping_ctr },
-       { NULL }
+       {
+               .name = discard_const_p(char, "destination_dsa_guid"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_destination_dsa_guid,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_destination_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element destination_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_naming_context,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "highwatermark"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_highwatermark,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_highwatermark,
+               .doc = discard_const_p(char, "PIDL-generated element highwatermark")
+       },
+       {
+               .name = discard_const_p(char, "uptodateness_vector"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_uptodateness_vector,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_uptodateness_vector,
+               .doc = discard_const_p(char, "PIDL-generated element uptodateness_vector")
+       },
+       {
+               .name = discard_const_p(char, "replica_flags"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_replica_flags,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_replica_flags,
+               .doc = discard_const_p(char, "PIDL-generated element replica_flags")
+       },
+       {
+               .name = discard_const_p(char, "max_object_count"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_max_object_count,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_max_object_count,
+               .doc = discard_const_p(char, "PIDL-generated element max_object_count")
+       },
+       {
+               .name = discard_const_p(char, "max_ndr_size"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_max_ndr_size,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_max_ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element max_ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "extended_op"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_extended_op,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_extended_op,
+               .doc = discard_const_p(char, "PIDL-generated element extended_op")
+       },
+       {
+               .name = discard_const_p(char, "fsmo_info"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_fsmo_info,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_fsmo_info,
+               .doc = discard_const_p(char, "PIDL-generated element fsmo_info")
+       },
+       {
+               .name = discard_const_p(char, "partial_attribute_set"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_partial_attribute_set,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_partial_attribute_set,
+               .doc = discard_const_p(char, "PIDL-generated element partial_attribute_set")
+       },
+       {
+               .name = discard_const_p(char, "partial_attribute_set_ex"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_partial_attribute_set_ex,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_partial_attribute_set_ex,
+               .doc = discard_const_p(char, "PIDL-generated element partial_attribute_set_ex")
+       },
+       {
+               .name = discard_const_p(char, "mapping_ctr"),
+               .get = py_drsuapi_DsGetNCChangesRequest8_get_mapping_ctr,
+               .set = py_drsuapi_DsGetNCChangesRequest8_set_mapping_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element mapping_ctr")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesRequest8_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -4501,7 +5459,6 @@ static PyTypeObject drsuapi_DsGetNCChangesRequest8_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesRequest8_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesRequest8_new,
 };
 
@@ -4517,6 +5474,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_destination_dsa_guid(PyO
 static int py_drsuapi_DsGetNCChangesRequest10_set_destination_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->destination_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4537,6 +5498,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_source_dsa_invocation_id
 static int py_drsuapi_DsGetNCChangesRequest10_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4558,7 +5523,15 @@ static int py_drsuapi_DsGetNCChangesRequest10_set_naming_context(PyObject *py_ob
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4579,6 +5552,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_highwatermark(PyObject *
 static int py_drsuapi_DsGetNCChangesRequest10_set_highwatermark(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highwatermark");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaHighWaterMark_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4605,10 +5582,18 @@ static int py_drsuapi_DsGetNCChangesRequest10_set_uptodateness_vector(PyObject *
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->uptodateness_vector));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->uptodateness_vector");
+               return -1;
+       }
        if (value == Py_None) {
                object->uptodateness_vector = NULL;
        } else {
                object->uptodateness_vector = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->uptodateness_vector");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaCursorCtrEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -4630,6 +5615,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_replica_flags(PyObject *
 static int py_drsuapi_DsGetNCChangesRequest10_set_replica_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->replica_flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->replica_flags));
                if (PyLong_Check(value)) {
@@ -4673,6 +5662,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_max_object_count(PyObjec
 static int py_drsuapi_DsGetNCChangesRequest10_set_max_object_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->max_object_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->max_object_count));
                if (PyLong_Check(value)) {
@@ -4716,6 +5709,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_max_ndr_size(PyObject *o
 static int py_drsuapi_DsGetNCChangesRequest10_set_max_ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->max_ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->max_ndr_size));
                if (PyLong_Check(value)) {
@@ -4759,6 +5756,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_extended_op(PyObject *ob
 static int py_drsuapi_DsGetNCChangesRequest10_set_extended_op(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_op");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_op));
                if (PyLong_Check(value)) {
@@ -4802,6 +5803,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_fsmo_info(PyObject *obj,
 static int py_drsuapi_DsGetNCChangesRequest10_set_fsmo_info(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->fsmo_info");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->fsmo_info));
                if (PyLong_Check(value)) {
@@ -4851,10 +5856,18 @@ static int py_drsuapi_DsGetNCChangesRequest10_set_partial_attribute_set(PyObject
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->partial_attribute_set));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->partial_attribute_set");
+               return -1;
+       }
        if (value == Py_None) {
                object->partial_attribute_set = NULL;
        } else {
                object->partial_attribute_set = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->partial_attribute_set");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsPartialAttributeSet_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -4882,10 +5895,18 @@ static int py_drsuapi_DsGetNCChangesRequest10_set_partial_attribute_set_ex(PyObj
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->partial_attribute_set_ex));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->partial_attribute_set_ex");
+               return -1;
+       }
        if (value == Py_None) {
                object->partial_attribute_set_ex = NULL;
        } else {
                object->partial_attribute_set_ex = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->partial_attribute_set_ex");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsPartialAttributeSet_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -4907,6 +5928,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_mapping_ctr(PyObject *ob
 static int py_drsuapi_DsGetNCChangesRequest10_set_mapping_ctr(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mapping_ctr");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaOIDMapping_Ctr_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -4927,6 +5952,10 @@ static PyObject *py_drsuapi_DsGetNCChangesRequest10_get_more_flags(PyObject *obj
 static int py_drsuapi_DsGetNCChangesRequest10_set_more_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesRequest10 *object = (struct drsuapi_DsGetNCChangesRequest10 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->more_flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->more_flags));
                if (PyLong_Check(value)) {
@@ -4960,21 +5989,91 @@ static int py_drsuapi_DsGetNCChangesRequest10_set_more_flags(PyObject *py_obj, P
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesRequest10_getsetters[] = {
-       { discard_const_p(char, "destination_dsa_guid"), py_drsuapi_DsGetNCChangesRequest10_get_destination_dsa_guid, py_drsuapi_DsGetNCChangesRequest10_set_destination_dsa_guid },
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsGetNCChangesRequest10_get_source_dsa_invocation_id, py_drsuapi_DsGetNCChangesRequest10_set_source_dsa_invocation_id },
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsGetNCChangesRequest10_get_naming_context, py_drsuapi_DsGetNCChangesRequest10_set_naming_context },
-       { discard_const_p(char, "highwatermark"), py_drsuapi_DsGetNCChangesRequest10_get_highwatermark, py_drsuapi_DsGetNCChangesRequest10_set_highwatermark },
-       { discard_const_p(char, "uptodateness_vector"), py_drsuapi_DsGetNCChangesRequest10_get_uptodateness_vector, py_drsuapi_DsGetNCChangesRequest10_set_uptodateness_vector },
-       { discard_const_p(char, "replica_flags"), py_drsuapi_DsGetNCChangesRequest10_get_replica_flags, py_drsuapi_DsGetNCChangesRequest10_set_replica_flags },
-       { discard_const_p(char, "max_object_count"), py_drsuapi_DsGetNCChangesRequest10_get_max_object_count, py_drsuapi_DsGetNCChangesRequest10_set_max_object_count },
-       { discard_const_p(char, "max_ndr_size"), py_drsuapi_DsGetNCChangesRequest10_get_max_ndr_size, py_drsuapi_DsGetNCChangesRequest10_set_max_ndr_size },
-       { discard_const_p(char, "extended_op"), py_drsuapi_DsGetNCChangesRequest10_get_extended_op, py_drsuapi_DsGetNCChangesRequest10_set_extended_op },
-       { discard_const_p(char, "fsmo_info"), py_drsuapi_DsGetNCChangesRequest10_get_fsmo_info, py_drsuapi_DsGetNCChangesRequest10_set_fsmo_info },
-       { discard_const_p(char, "partial_attribute_set"), py_drsuapi_DsGetNCChangesRequest10_get_partial_attribute_set, py_drsuapi_DsGetNCChangesRequest10_set_partial_attribute_set },
-       { discard_const_p(char, "partial_attribute_set_ex"), py_drsuapi_DsGetNCChangesRequest10_get_partial_attribute_set_ex, py_drsuapi_DsGetNCChangesRequest10_set_partial_attribute_set_ex },
-       { discard_const_p(char, "mapping_ctr"), py_drsuapi_DsGetNCChangesRequest10_get_mapping_ctr, py_drsuapi_DsGetNCChangesRequest10_set_mapping_ctr },
-       { discard_const_p(char, "more_flags"), py_drsuapi_DsGetNCChangesRequest10_get_more_flags, py_drsuapi_DsGetNCChangesRequest10_set_more_flags },
-       { NULL }
+       {
+               .name = discard_const_p(char, "destination_dsa_guid"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_destination_dsa_guid,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_destination_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element destination_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_naming_context,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "highwatermark"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_highwatermark,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_highwatermark,
+               .doc = discard_const_p(char, "PIDL-generated element highwatermark")
+       },
+       {
+               .name = discard_const_p(char, "uptodateness_vector"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_uptodateness_vector,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_uptodateness_vector,
+               .doc = discard_const_p(char, "PIDL-generated element uptodateness_vector")
+       },
+       {
+               .name = discard_const_p(char, "replica_flags"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_replica_flags,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_replica_flags,
+               .doc = discard_const_p(char, "PIDL-generated element replica_flags")
+       },
+       {
+               .name = discard_const_p(char, "max_object_count"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_max_object_count,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_max_object_count,
+               .doc = discard_const_p(char, "PIDL-generated element max_object_count")
+       },
+       {
+               .name = discard_const_p(char, "max_ndr_size"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_max_ndr_size,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_max_ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element max_ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "extended_op"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_extended_op,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_extended_op,
+               .doc = discard_const_p(char, "PIDL-generated element extended_op")
+       },
+       {
+               .name = discard_const_p(char, "fsmo_info"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_fsmo_info,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_fsmo_info,
+               .doc = discard_const_p(char, "PIDL-generated element fsmo_info")
+       },
+       {
+               .name = discard_const_p(char, "partial_attribute_set"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_partial_attribute_set,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_partial_attribute_set,
+               .doc = discard_const_p(char, "PIDL-generated element partial_attribute_set")
+       },
+       {
+               .name = discard_const_p(char, "partial_attribute_set_ex"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_partial_attribute_set_ex,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_partial_attribute_set_ex,
+               .doc = discard_const_p(char, "PIDL-generated element partial_attribute_set_ex")
+       },
+       {
+               .name = discard_const_p(char, "mapping_ctr"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_mapping_ctr,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_mapping_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element mapping_ctr")
+       },
+       {
+               .name = discard_const_p(char, "more_flags"),
+               .get = py_drsuapi_DsGetNCChangesRequest10_get_more_flags,
+               .set = py_drsuapi_DsGetNCChangesRequest10_set_more_flags,
+               .doc = discard_const_p(char, "PIDL-generated element more_flags")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesRequest10_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -4989,7 +6088,6 @@ static PyTypeObject drsuapi_DsGetNCChangesRequest10_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesRequest10_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesRequest10_new,
 };
 
@@ -5020,6 +6118,10 @@ union drsuapi_DsGetNCChangesRequest *py_export_drsuapi_DsGetNCChangesRequest(TAL
        union drsuapi_DsGetNCChangesRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsGetNCChangesRequest);
        switch (level) {
                case 5:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req5");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesRequest5_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -5029,6 +6131,10 @@ union drsuapi_DsGetNCChangesRequest *py_export_drsuapi_DsGetNCChangesRequest(TAL
                        break;
 
                case 8:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req8");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesRequest8_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -5038,6 +6144,10 @@ union drsuapi_DsGetNCChangesRequest *py_export_drsuapi_DsGetNCChangesRequest(TAL
                        break;
 
                case 10:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req10");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesRequest10_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -5067,6 +6177,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2_get_source_dsa_invocation_id(PyObje
 static int py_drsuapi_DsReplicaCursor2_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2 *object = (struct drsuapi_DsReplicaCursor2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -5087,6 +6201,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2_get_highest_usn(PyObject *obj, void
 static int py_drsuapi_DsReplicaCursor2_set_highest_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2 *object = (struct drsuapi_DsReplicaCursor2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highest_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->highest_usn));
                if (PyLong_Check(value)) {
@@ -5130,6 +6248,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2_get_last_sync_success(PyObject *obj
 static int py_drsuapi_DsReplicaCursor2_set_last_sync_success(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2 *object = (struct drsuapi_DsReplicaCursor2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->last_sync_success");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->last_sync_success));
                if (PyLong_Check(value)) {
@@ -5163,10 +6285,25 @@ static int py_drsuapi_DsReplicaCursor2_set_last_sync_success(PyObject *py_obj, P
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursor2_getsetters[] = {
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsReplicaCursor2_get_source_dsa_invocation_id, py_drsuapi_DsReplicaCursor2_set_source_dsa_invocation_id },
-       { discard_const_p(char, "highest_usn"), py_drsuapi_DsReplicaCursor2_get_highest_usn, py_drsuapi_DsReplicaCursor2_set_highest_usn },
-       { discard_const_p(char, "last_sync_success"), py_drsuapi_DsReplicaCursor2_get_last_sync_success, py_drsuapi_DsReplicaCursor2_set_last_sync_success },
-       { NULL }
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsReplicaCursor2_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsReplicaCursor2_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "highest_usn"),
+               .get = py_drsuapi_DsReplicaCursor2_get_highest_usn,
+               .set = py_drsuapi_DsReplicaCursor2_set_highest_usn,
+               .doc = discard_const_p(char, "PIDL-generated element highest_usn")
+       },
+       {
+               .name = discard_const_p(char, "last_sync_success"),
+               .get = py_drsuapi_DsReplicaCursor2_get_last_sync_success,
+               .set = py_drsuapi_DsReplicaCursor2_set_last_sync_success,
+               .doc = discard_const_p(char, "PIDL-generated element last_sync_success")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursor2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -5177,22 +6314,31 @@ static PyObject *py_drsuapi_DsReplicaCursor2_new(PyTypeObject *type, PyObject *a
 static PyObject *py_drsuapi_DsReplicaCursor2_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaCursor2 *object = (struct drsuapi_DsReplicaCursor2 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaCursor2);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaCursor2);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaCursor2_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaCursor2 *object = (struct drsuapi_DsReplicaCursor2 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -5250,7 +6396,6 @@ static PyTypeObject drsuapi_DsReplicaCursor2_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursor2_getsetters,
        .tp_methods = py_drsuapi_DsReplicaCursor2_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursor2_new,
 };
 
@@ -5266,6 +6411,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2CtrEx_get_version(PyObject *obj, voi
 static int py_drsuapi_DsReplicaCursor2CtrEx_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2CtrEx *object = (struct drsuapi_DsReplicaCursor2CtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -5309,6 +6458,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2CtrEx_get_reserved1(PyObject *obj, v
 static int py_drsuapi_DsReplicaCursor2CtrEx_set_reserved1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2CtrEx *object = (struct drsuapi_DsReplicaCursor2CtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved1");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved1));
                if (PyLong_Check(value)) {
@@ -5352,6 +6505,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2CtrEx_get_count(PyObject *obj, void
 static int py_drsuapi_DsReplicaCursor2CtrEx_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2CtrEx *object = (struct drsuapi_DsReplicaCursor2CtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -5395,6 +6552,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2CtrEx_get_reserved2(PyObject *obj, v
 static int py_drsuapi_DsReplicaCursor2CtrEx_set_reserved2(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2CtrEx *object = (struct drsuapi_DsReplicaCursor2CtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved2");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved2));
                if (PyLong_Check(value)) {
@@ -5449,6 +6610,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2CtrEx_get_cursors(PyObject *obj, voi
 static int py_drsuapi_DsReplicaCursor2CtrEx_set_cursors(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2CtrEx *object = (struct drsuapi_DsReplicaCursor2CtrEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->cursors");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int cursors_cntr_0;
@@ -5456,6 +6621,10 @@ static int py_drsuapi_DsReplicaCursor2CtrEx_set_cursors(PyObject *py_obj, PyObje
                if (!object->cursors) { return -1;; }
                talloc_set_name_const(object->cursors, "ARRAY: object->cursors");
                for (cursors_cntr_0 = 0; cursors_cntr_0 < PyList_GET_SIZE(value); cursors_cntr_0++) {
+                       if (PyList_GET_ITEM(value, cursors_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->cursors[cursors_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaCursor2_Type, PyList_GET_ITEM(value, cursors_cntr_0), return -1;);
                        if (talloc_reference(object->cursors, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, cursors_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -5468,12 +6637,37 @@ static int py_drsuapi_DsReplicaCursor2CtrEx_set_cursors(PyObject *py_obj, PyObje
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursor2CtrEx_getsetters[] = {
-       { discard_const_p(char, "version"), py_drsuapi_DsReplicaCursor2CtrEx_get_version, py_drsuapi_DsReplicaCursor2CtrEx_set_version },
-       { discard_const_p(char, "reserved1"), py_drsuapi_DsReplicaCursor2CtrEx_get_reserved1, py_drsuapi_DsReplicaCursor2CtrEx_set_reserved1 },
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaCursor2CtrEx_get_count, py_drsuapi_DsReplicaCursor2CtrEx_set_count },
-       { discard_const_p(char, "reserved2"), py_drsuapi_DsReplicaCursor2CtrEx_get_reserved2, py_drsuapi_DsReplicaCursor2CtrEx_set_reserved2 },
-       { discard_const_p(char, "cursors"), py_drsuapi_DsReplicaCursor2CtrEx_get_cursors, py_drsuapi_DsReplicaCursor2CtrEx_set_cursors },
-       { NULL }
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsReplicaCursor2CtrEx_get_version,
+               .set = py_drsuapi_DsReplicaCursor2CtrEx_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "reserved1"),
+               .get = py_drsuapi_DsReplicaCursor2CtrEx_get_reserved1,
+               .set = py_drsuapi_DsReplicaCursor2CtrEx_set_reserved1,
+               .doc = discard_const_p(char, "PIDL-generated element reserved1")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaCursor2CtrEx_get_count,
+               .set = py_drsuapi_DsReplicaCursor2CtrEx_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved2"),
+               .get = py_drsuapi_DsReplicaCursor2CtrEx_get_reserved2,
+               .set = py_drsuapi_DsReplicaCursor2CtrEx_set_reserved2,
+               .doc = discard_const_p(char, "PIDL-generated element reserved2")
+       },
+       {
+               .name = discard_const_p(char, "cursors"),
+               .get = py_drsuapi_DsReplicaCursor2CtrEx_get_cursors,
+               .set = py_drsuapi_DsReplicaCursor2CtrEx_set_cursors,
+               .doc = discard_const_p(char, "PIDL-generated element cursors")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursor2CtrEx_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -5488,7 +6682,6 @@ static PyTypeObject drsuapi_DsReplicaCursor2CtrEx_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursor2CtrEx_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursor2CtrEx_new,
 };
 
@@ -5504,6 +6697,10 @@ static PyObject *py_drsuapi_DsAttributeValue_get___ndr_size(PyObject *obj, void
 static int py_drsuapi_DsAttributeValue_set___ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAttributeValue *object = (struct drsuapi_DsAttributeValue *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size));
                if (PyLong_Check(value)) {
@@ -5553,19 +6750,37 @@ static int py_drsuapi_DsAttributeValue_set_blob(PyObject *py_obj, PyObject *valu
 {
        struct drsuapi_DsAttributeValue *object = (struct drsuapi_DsAttributeValue *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->blob));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->blob");
+               return -1;
+       }
        if (value == Py_None) {
                object->blob = NULL;
        } else {
                object->blob = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->blob);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->blob");
+                       return -1;
+               }
                *object->blob = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
        }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsAttributeValue_getsetters[] = {
-       { discard_const_p(char, "__ndr_size"), py_drsuapi_DsAttributeValue_get___ndr_size, py_drsuapi_DsAttributeValue_set___ndr_size },
-       { discard_const_p(char, "blob"), py_drsuapi_DsAttributeValue_get_blob, py_drsuapi_DsAttributeValue_set_blob },
-       { NULL }
+       {
+               .name = discard_const_p(char, "__ndr_size"),
+               .get = py_drsuapi_DsAttributeValue_get___ndr_size,
+               .set = py_drsuapi_DsAttributeValue_set___ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "blob"),
+               .get = py_drsuapi_DsAttributeValue_get_blob,
+               .set = py_drsuapi_DsAttributeValue_set_blob,
+               .doc = discard_const_p(char, "PIDL-generated element blob")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAttributeValue_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -5580,7 +6795,6 @@ static PyTypeObject drsuapi_DsAttributeValue_Type = {
        .tp_getset = py_drsuapi_DsAttributeValue_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAttributeValue_new,
 };
 
@@ -5596,6 +6810,10 @@ static PyObject *py_drsuapi_DsAttributeValueCtr_get_num_values(PyObject *obj, vo
 static int py_drsuapi_DsAttributeValueCtr_set_num_values(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAttributeValueCtr *object = (struct drsuapi_DsAttributeValueCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_values");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_values));
                if (PyLong_Check(value)) {
@@ -5656,10 +6874,18 @@ static int py_drsuapi_DsAttributeValueCtr_set_values(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsAttributeValueCtr *object = (struct drsuapi_DsAttributeValueCtr *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->values));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->values");
+               return -1;
+       }
        if (value == Py_None) {
                object->values = NULL;
        } else {
                object->values = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->values");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int values_cntr_1;
@@ -5667,6 +6893,10 @@ static int py_drsuapi_DsAttributeValueCtr_set_values(PyObject *py_obj, PyObject
                        if (!object->values) { return -1;; }
                        talloc_set_name_const(object->values, "ARRAY: object->values");
                        for (values_cntr_1 = 0; values_cntr_1 < PyList_GET_SIZE(value); values_cntr_1++) {
+                               if (PyList_GET_ITEM(value, values_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->values[values_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsAttributeValue_Type, PyList_GET_ITEM(value, values_cntr_1), return -1;);
                                if (talloc_reference(object->values, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, values_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -5680,9 +6910,19 @@ static int py_drsuapi_DsAttributeValueCtr_set_values(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsAttributeValueCtr_getsetters[] = {
-       { discard_const_p(char, "num_values"), py_drsuapi_DsAttributeValueCtr_get_num_values, py_drsuapi_DsAttributeValueCtr_set_num_values },
-       { discard_const_p(char, "values"), py_drsuapi_DsAttributeValueCtr_get_values, py_drsuapi_DsAttributeValueCtr_set_values },
-       { NULL }
+       {
+               .name = discard_const_p(char, "num_values"),
+               .get = py_drsuapi_DsAttributeValueCtr_get_num_values,
+               .set = py_drsuapi_DsAttributeValueCtr_set_num_values,
+               .doc = discard_const_p(char, "PIDL-generated element num_values")
+       },
+       {
+               .name = discard_const_p(char, "values"),
+               .get = py_drsuapi_DsAttributeValueCtr_get_values,
+               .set = py_drsuapi_DsAttributeValueCtr_set_values,
+               .doc = discard_const_p(char, "PIDL-generated element values")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAttributeValueCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -5697,7 +6937,6 @@ static PyTypeObject drsuapi_DsAttributeValueCtr_Type = {
        .tp_getset = py_drsuapi_DsAttributeValueCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAttributeValueCtr_new,
 };
 
@@ -5713,6 +6952,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size(PyObject *
 static int py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size));
                if (PyLong_Check(value)) {
@@ -5756,6 +6999,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size_sid(PyObje
 static int py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size_sid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_sid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_sid));
                if (PyLong_Check(value)) {
@@ -5799,6 +7046,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_get_guid(PyObject *obj, v
 static int py_drsuapi_DsReplicaObjectIdentifier3_set_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -5819,6 +7070,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_get_sid(PyObject *obj, vo
 static int py_drsuapi_DsReplicaObjectIdentifier3_set_sid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sid");
+               return -1;
+       }
        PY_CHECK_TYPE(dom_sid_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -5839,6 +7094,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size_dn(PyObjec
 static int py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_dn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_dn));
                if (PyLong_Check(value)) {
@@ -5887,25 +7146,78 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_get_dn(PyObject *obj, voi
 static int py_drsuapi_DsReplicaObjectIdentifier3_set_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
-       if (PyUnicode_Check(value)) {
-               object->dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-       } else if (PyString_Check(value)) {
-               object->dn = PyString_AS_STRING(value);
-       } else {
-               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dn");
                return -1;
        }
+       {
+               const char *test_str;
+               const char *talloc_str;
+               PyObject *unicode = NULL;
+               if (PyUnicode_Check(value)) {
+                       unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                       if (unicode == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       test_str = PyString_AS_STRING(unicode);
+               } else if (PyString_Check(value)) {
+                       test_str = PyString_AS_STRING(value);
+               } else {
+                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                       return -1;
+               }
+               talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+               if (unicode != NULL) {
+                       Py_DECREF(unicode);
+               }
+               if (talloc_str == NULL) {
+                       PyErr_NoMemory();
+                       return -1;
+               }
+               object->dn = talloc_str;
+       }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjectIdentifier3_getsetters[] = {
-       { discard_const_p(char, "__ndr_size"), py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size, py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size },
-       { discard_const_p(char, "__ndr_size_sid"), py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size_sid, py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size_sid },
-       { discard_const_p(char, "guid"), py_drsuapi_DsReplicaObjectIdentifier3_get_guid, py_drsuapi_DsReplicaObjectIdentifier3_set_guid },
-       { discard_const_p(char, "sid"), py_drsuapi_DsReplicaObjectIdentifier3_get_sid, py_drsuapi_DsReplicaObjectIdentifier3_set_sid },
-       { discard_const_p(char, "__ndr_size_dn"), py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size_dn, py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size_dn },
-       { discard_const_p(char, "dn"), py_drsuapi_DsReplicaObjectIdentifier3_get_dn, py_drsuapi_DsReplicaObjectIdentifier3_set_dn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "__ndr_size"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_sid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size_sid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size_sid,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_sid")
+       },
+       {
+               .name = discard_const_p(char, "guid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3_get_guid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3_set_guid,
+               .doc = discard_const_p(char, "PIDL-generated element guid")
+       },
+       {
+               .name = discard_const_p(char, "sid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3_get_sid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3_set_sid,
+               .doc = discard_const_p(char, "PIDL-generated element sid")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_dn"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3_get___ndr_size_dn,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3_set___ndr_size_dn,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_dn")
+       },
+       {
+               .name = discard_const_p(char, "dn"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3_get_dn,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3_set_dn,
+               .doc = discard_const_p(char, "PIDL-generated element dn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -5916,22 +7228,31 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_new(PyTypeObject *type, P
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier3_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaObjectIdentifier3 *object = (struct drsuapi_DsReplicaObjectIdentifier3 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -5989,7 +7310,6 @@ static PyTypeObject drsuapi_DsReplicaObjectIdentifier3_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjectIdentifier3_getsetters,
        .tp_methods = py_drsuapi_DsReplicaObjectIdentifier3_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjectIdentifier3_new,
 };
 
@@ -6005,6 +7325,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size(PyOb
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size));
                if (PyLong_Check(value)) {
@@ -6048,6 +7372,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_sid(
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_sid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_sid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_sid));
                if (PyLong_Check(value)) {
@@ -6091,6 +7419,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get_guid(PyObject *
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -6111,6 +7443,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get_sid(PyObject *o
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set_sid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sid");
+               return -1;
+       }
        PY_CHECK_TYPE(dom_sid_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -6131,6 +7467,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_dn(P
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_dn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_dn));
                if (PyLong_Check(value)) {
@@ -6179,14 +7519,37 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get_dn(PyObject *ob
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
-       if (PyUnicode_Check(value)) {
-               object->dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-       } else if (PyString_Check(value)) {
-               object->dn = PyString_AS_STRING(value);
-       } else {
-               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dn");
                return -1;
        }
+       {
+               const char *test_str;
+               const char *talloc_str;
+               PyObject *unicode = NULL;
+               if (PyUnicode_Check(value)) {
+                       unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                       if (unicode == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       test_str = PyString_AS_STRING(unicode);
+               } else if (PyString_Check(value)) {
+                       test_str = PyString_AS_STRING(value);
+               } else {
+                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                       return -1;
+               }
+               talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+               if (unicode != NULL) {
+                       Py_DECREF(unicode);
+               }
+               if (talloc_str == NULL) {
+                       PyErr_NoMemory();
+                       return -1;
+               }
+               object->dn = talloc_str;
+       }
        return 0;
 }
 
@@ -6201,6 +7564,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_bina
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_binary(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_binary");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_binary));
                if (PyLong_Check(value)) {
@@ -6244,20 +7611,64 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_get_binary(PyObject
 static int py_drsuapi_DsReplicaObjectIdentifier3Binary_set_binary(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->binary");
+               return -1;
+       }
        object->binary = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjectIdentifier3Binary_getsetters[] = {
-       { discard_const_p(char, "__ndr_size"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size, py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size },
-       { discard_const_p(char, "__ndr_size_sid"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_sid, py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_sid },
-       { discard_const_p(char, "guid"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get_guid, py_drsuapi_DsReplicaObjectIdentifier3Binary_set_guid },
-       { discard_const_p(char, "sid"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get_sid, py_drsuapi_DsReplicaObjectIdentifier3Binary_set_sid },
-       { discard_const_p(char, "__ndr_size_dn"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_dn, py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_dn },
-       { discard_const_p(char, "dn"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get_dn, py_drsuapi_DsReplicaObjectIdentifier3Binary_set_dn },
-       { discard_const_p(char, "__ndr_size_binary"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_binary, py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_binary },
-       { discard_const_p(char, "binary"), py_drsuapi_DsReplicaObjectIdentifier3Binary_get_binary, py_drsuapi_DsReplicaObjectIdentifier3Binary_set_binary },
-       { NULL }
+       {
+               .name = discard_const_p(char, "__ndr_size"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_sid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_sid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_sid,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_sid")
+       },
+       {
+               .name = discard_const_p(char, "guid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get_guid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set_guid,
+               .doc = discard_const_p(char, "PIDL-generated element guid")
+       },
+       {
+               .name = discard_const_p(char, "sid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get_sid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set_sid,
+               .doc = discard_const_p(char, "PIDL-generated element sid")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_dn"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_dn,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_dn,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_dn")
+       },
+       {
+               .name = discard_const_p(char, "dn"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get_dn,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set_dn,
+               .doc = discard_const_p(char, "PIDL-generated element dn")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_binary"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get___ndr_size_binary,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set___ndr_size_binary,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_binary")
+       },
+       {
+               .name = discard_const_p(char, "binary"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier3Binary_get_binary,
+               .set = py_drsuapi_DsReplicaObjectIdentifier3Binary_set_binary,
+               .doc = discard_const_p(char, "PIDL-generated element binary")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -6268,22 +7679,31 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_new(PyTypeObject *t
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier3Binary_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaObjectIdentifier3Binary *object = (struct drsuapi_DsReplicaObjectIdentifier3Binary *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -6341,7 +7761,6 @@ static PyTypeObject drsuapi_DsReplicaObjectIdentifier3Binary_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjectIdentifier3Binary_getsetters,
        .tp_methods = py_drsuapi_DsReplicaObjectIdentifier3Binary_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjectIdentifier3Binary_new,
 };
 
@@ -6357,6 +7776,10 @@ static PyObject *py_drsuapi_DsReplicaAttribute_get_attid(PyObject *obj, void *cl
 static int py_drsuapi_DsReplicaAttribute_set_attid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttribute *object = (struct drsuapi_DsReplicaAttribute *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->attid));
                if (PyLong_Check(value)) {
@@ -6400,6 +7823,10 @@ static PyObject *py_drsuapi_DsReplicaAttribute_get_value_ctr(PyObject *obj, void
 static int py_drsuapi_DsReplicaAttribute_set_value_ctr(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttribute *object = (struct drsuapi_DsReplicaAttribute *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->value_ctr");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsAttributeValueCtr_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -6410,9 +7837,19 @@ static int py_drsuapi_DsReplicaAttribute_set_value_ctr(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAttribute_getsetters[] = {
-       { discard_const_p(char, "attid"), py_drsuapi_DsReplicaAttribute_get_attid, py_drsuapi_DsReplicaAttribute_set_attid },
-       { discard_const_p(char, "value_ctr"), py_drsuapi_DsReplicaAttribute_get_value_ctr, py_drsuapi_DsReplicaAttribute_set_value_ctr },
-       { NULL }
+       {
+               .name = discard_const_p(char, "attid"),
+               .get = py_drsuapi_DsReplicaAttribute_get_attid,
+               .set = py_drsuapi_DsReplicaAttribute_set_attid,
+               .doc = discard_const_p(char, "PIDL-generated element attid")
+       },
+       {
+               .name = discard_const_p(char, "value_ctr"),
+               .get = py_drsuapi_DsReplicaAttribute_get_value_ctr,
+               .set = py_drsuapi_DsReplicaAttribute_set_value_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element value_ctr")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAttribute_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -6423,22 +7860,31 @@ static PyObject *py_drsuapi_DsReplicaAttribute_new(PyTypeObject *type, PyObject
 static PyObject *py_drsuapi_DsReplicaAttribute_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaAttribute *object = (struct drsuapi_DsReplicaAttribute *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaAttribute);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaAttribute);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaAttribute_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaAttribute *object = (struct drsuapi_DsReplicaAttribute *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -6496,7 +7942,6 @@ static PyTypeObject drsuapi_DsReplicaAttribute_Type = {
        .tp_getset = py_drsuapi_DsReplicaAttribute_getsetters,
        .tp_methods = py_drsuapi_DsReplicaAttribute_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAttribute_new,
 };
 
@@ -6512,6 +7957,10 @@ static PyObject *py_drsuapi_DsReplicaAttributeCtr_get_num_attributes(PyObject *o
 static int py_drsuapi_DsReplicaAttributeCtr_set_num_attributes(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttributeCtr *object = (struct drsuapi_DsReplicaAttributeCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_attributes");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_attributes));
                if (PyLong_Check(value)) {
@@ -6572,10 +8021,18 @@ static int py_drsuapi_DsReplicaAttributeCtr_set_attributes(PyObject *py_obj, PyO
 {
        struct drsuapi_DsReplicaAttributeCtr *object = (struct drsuapi_DsReplicaAttributeCtr *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->attributes));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attributes");
+               return -1;
+       }
        if (value == Py_None) {
                object->attributes = NULL;
        } else {
                object->attributes = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->attributes");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int attributes_cntr_1;
@@ -6583,6 +8040,10 @@ static int py_drsuapi_DsReplicaAttributeCtr_set_attributes(PyObject *py_obj, PyO
                        if (!object->attributes) { return -1;; }
                        talloc_set_name_const(object->attributes, "ARRAY: object->attributes");
                        for (attributes_cntr_1 = 0; attributes_cntr_1 < PyList_GET_SIZE(value); attributes_cntr_1++) {
+                               if (PyList_GET_ITEM(value, attributes_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attributes[attributes_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaAttribute_Type, PyList_GET_ITEM(value, attributes_cntr_1), return -1;);
                                if (talloc_reference(object->attributes, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, attributes_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -6596,9 +8057,19 @@ static int py_drsuapi_DsReplicaAttributeCtr_set_attributes(PyObject *py_obj, PyO
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAttributeCtr_getsetters[] = {
-       { discard_const_p(char, "num_attributes"), py_drsuapi_DsReplicaAttributeCtr_get_num_attributes, py_drsuapi_DsReplicaAttributeCtr_set_num_attributes },
-       { discard_const_p(char, "attributes"), py_drsuapi_DsReplicaAttributeCtr_get_attributes, py_drsuapi_DsReplicaAttributeCtr_set_attributes },
-       { NULL }
+       {
+               .name = discard_const_p(char, "num_attributes"),
+               .get = py_drsuapi_DsReplicaAttributeCtr_get_num_attributes,
+               .set = py_drsuapi_DsReplicaAttributeCtr_set_num_attributes,
+               .doc = discard_const_p(char, "PIDL-generated element num_attributes")
+       },
+       {
+               .name = discard_const_p(char, "attributes"),
+               .get = py_drsuapi_DsReplicaAttributeCtr_get_attributes,
+               .set = py_drsuapi_DsReplicaAttributeCtr_set_attributes,
+               .doc = discard_const_p(char, "PIDL-generated element attributes")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAttributeCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -6613,7 +8084,6 @@ static PyTypeObject drsuapi_DsReplicaAttributeCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaAttributeCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAttributeCtr_new,
 };
 
@@ -6635,11 +8105,19 @@ static int py_drsuapi_DsReplicaObject_set_identifier(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsReplicaObject *object = (struct drsuapi_DsReplicaObject *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->identifier));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->identifier");
+               return -1;
+       }
        if (value == Py_None) {
                object->identifier = NULL;
        } else {
                object->identifier = NULL;
-               PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->identifier");
+                       return -1;
+               }
+               PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
                        return -1;
@@ -6660,6 +8138,10 @@ static PyObject *py_drsuapi_DsReplicaObject_get_flags(PyObject *obj, void *closu
 static int py_drsuapi_DsReplicaObject_set_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObject *object = (struct drsuapi_DsReplicaObject *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags));
                if (PyLong_Check(value)) {
@@ -6703,6 +8185,10 @@ static PyObject *py_drsuapi_DsReplicaObject_get_attribute_ctr(PyObject *obj, voi
 static int py_drsuapi_DsReplicaObject_set_attribute_ctr(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObject *object = (struct drsuapi_DsReplicaObject *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attribute_ctr");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaAttributeCtr_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -6713,10 +8199,25 @@ static int py_drsuapi_DsReplicaObject_set_attribute_ctr(PyObject *py_obj, PyObje
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObject_getsetters[] = {
-       { discard_const_p(char, "identifier"), py_drsuapi_DsReplicaObject_get_identifier, py_drsuapi_DsReplicaObject_set_identifier },
-       { discard_const_p(char, "flags"), py_drsuapi_DsReplicaObject_get_flags, py_drsuapi_DsReplicaObject_set_flags },
-       { discard_const_p(char, "attribute_ctr"), py_drsuapi_DsReplicaObject_get_attribute_ctr, py_drsuapi_DsReplicaObject_set_attribute_ctr },
-       { NULL }
+       {
+               .name = discard_const_p(char, "identifier"),
+               .get = py_drsuapi_DsReplicaObject_get_identifier,
+               .set = py_drsuapi_DsReplicaObject_set_identifier,
+               .doc = discard_const_p(char, "PIDL-generated element identifier")
+       },
+       {
+               .name = discard_const_p(char, "flags"),
+               .get = py_drsuapi_DsReplicaObject_get_flags,
+               .set = py_drsuapi_DsReplicaObject_set_flags,
+               .doc = discard_const_p(char, "PIDL-generated element flags")
+       },
+       {
+               .name = discard_const_p(char, "attribute_ctr"),
+               .get = py_drsuapi_DsReplicaObject_get_attribute_ctr,
+               .set = py_drsuapi_DsReplicaObject_set_attribute_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element attribute_ctr")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObject_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -6727,22 +8228,31 @@ static PyObject *py_drsuapi_DsReplicaObject_new(PyTypeObject *type, PyObject *ar
 static PyObject *py_drsuapi_DsReplicaObject_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaObject *object = (struct drsuapi_DsReplicaObject *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObject);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObject);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaObject_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaObject *object = (struct drsuapi_DsReplicaObject *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -6800,7 +8310,6 @@ static PyTypeObject drsuapi_DsReplicaObject_Type = {
        .tp_getset = py_drsuapi_DsReplicaObject_getsetters,
        .tp_methods = py_drsuapi_DsReplicaObject_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObject_new,
 };
 
@@ -6816,6 +8325,10 @@ static PyObject *py_drsuapi_DsReplicaMetaData_get_version(PyObject *obj, void *c
 static int py_drsuapi_DsReplicaMetaData_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaMetaData *object = (struct drsuapi_DsReplicaMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -6859,6 +8372,10 @@ static PyObject *py_drsuapi_DsReplicaMetaData_get_originating_change_time(PyObje
 static int py_drsuapi_DsReplicaMetaData_set_originating_change_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaMetaData *object = (struct drsuapi_DsReplicaMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_change_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_change_time));
                if (PyLong_Check(value)) {
@@ -6902,6 +8419,10 @@ static PyObject *py_drsuapi_DsReplicaMetaData_get_originating_invocation_id(PyOb
 static int py_drsuapi_DsReplicaMetaData_set_originating_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaMetaData *object = (struct drsuapi_DsReplicaMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -6922,6 +8443,10 @@ static PyObject *py_drsuapi_DsReplicaMetaData_get_originating_usn(PyObject *obj,
 static int py_drsuapi_DsReplicaMetaData_set_originating_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaMetaData *object = (struct drsuapi_DsReplicaMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_usn));
                if (PyLong_Check(value)) {
@@ -6955,11 +8480,31 @@ static int py_drsuapi_DsReplicaMetaData_set_originating_usn(PyObject *py_obj, Py
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaMetaData_getsetters[] = {
-       { discard_const_p(char, "version"), py_drsuapi_DsReplicaMetaData_get_version, py_drsuapi_DsReplicaMetaData_set_version },
-       { discard_const_p(char, "originating_change_time"), py_drsuapi_DsReplicaMetaData_get_originating_change_time, py_drsuapi_DsReplicaMetaData_set_originating_change_time },
-       { discard_const_p(char, "originating_invocation_id"), py_drsuapi_DsReplicaMetaData_get_originating_invocation_id, py_drsuapi_DsReplicaMetaData_set_originating_invocation_id },
-       { discard_const_p(char, "originating_usn"), py_drsuapi_DsReplicaMetaData_get_originating_usn, py_drsuapi_DsReplicaMetaData_set_originating_usn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsReplicaMetaData_get_version,
+               .set = py_drsuapi_DsReplicaMetaData_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "originating_change_time"),
+               .get = py_drsuapi_DsReplicaMetaData_get_originating_change_time,
+               .set = py_drsuapi_DsReplicaMetaData_set_originating_change_time,
+               .doc = discard_const_p(char, "PIDL-generated element originating_change_time")
+       },
+       {
+               .name = discard_const_p(char, "originating_invocation_id"),
+               .get = py_drsuapi_DsReplicaMetaData_get_originating_invocation_id,
+               .set = py_drsuapi_DsReplicaMetaData_set_originating_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element originating_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "originating_usn"),
+               .get = py_drsuapi_DsReplicaMetaData_get_originating_usn,
+               .set = py_drsuapi_DsReplicaMetaData_set_originating_usn,
+               .doc = discard_const_p(char, "PIDL-generated element originating_usn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaMetaData_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -6974,7 +8519,6 @@ static PyTypeObject drsuapi_DsReplicaMetaData_Type = {
        .tp_getset = py_drsuapi_DsReplicaMetaData_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaMetaData_new,
 };
 
@@ -6990,6 +8534,10 @@ static PyObject *py_drsuapi_DsReplicaMetaDataCtr_get_count(PyObject *obj, void *
 static int py_drsuapi_DsReplicaMetaDataCtr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaMetaDataCtr *object = (struct drsuapi_DsReplicaMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -7044,6 +8592,10 @@ static PyObject *py_drsuapi_DsReplicaMetaDataCtr_get_meta_data(PyObject *obj, vo
 static int py_drsuapi_DsReplicaMetaDataCtr_set_meta_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaMetaDataCtr *object = (struct drsuapi_DsReplicaMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->meta_data");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int meta_data_cntr_0;
@@ -7051,6 +8603,10 @@ static int py_drsuapi_DsReplicaMetaDataCtr_set_meta_data(PyObject *py_obj, PyObj
                if (!object->meta_data) { return -1;; }
                talloc_set_name_const(object->meta_data, "ARRAY: object->meta_data");
                for (meta_data_cntr_0 = 0; meta_data_cntr_0 < PyList_GET_SIZE(value); meta_data_cntr_0++) {
+                       if (PyList_GET_ITEM(value, meta_data_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->meta_data[meta_data_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaMetaData_Type, PyList_GET_ITEM(value, meta_data_cntr_0), return -1;);
                        if (talloc_reference(object->meta_data, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, meta_data_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -7063,9 +8619,19 @@ static int py_drsuapi_DsReplicaMetaDataCtr_set_meta_data(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaMetaDataCtr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaMetaDataCtr_get_count, py_drsuapi_DsReplicaMetaDataCtr_set_count },
-       { discard_const_p(char, "meta_data"), py_drsuapi_DsReplicaMetaDataCtr_get_meta_data, py_drsuapi_DsReplicaMetaDataCtr_set_meta_data },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaMetaDataCtr_get_count,
+               .set = py_drsuapi_DsReplicaMetaDataCtr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "meta_data"),
+               .get = py_drsuapi_DsReplicaMetaDataCtr_get_meta_data,
+               .set = py_drsuapi_DsReplicaMetaDataCtr_set_meta_data,
+               .doc = discard_const_p(char, "PIDL-generated element meta_data")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaMetaDataCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -7076,22 +8642,31 @@ static PyObject *py_drsuapi_DsReplicaMetaDataCtr_new(PyTypeObject *type, PyObjec
 static PyObject *py_drsuapi_DsReplicaMetaDataCtr_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaMetaDataCtr *object = (struct drsuapi_DsReplicaMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaMetaDataCtr);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaMetaDataCtr);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaMetaDataCtr_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaMetaDataCtr *object = (struct drsuapi_DsReplicaMetaDataCtr *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -7149,7 +8724,6 @@ static PyTypeObject drsuapi_DsReplicaMetaDataCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaMetaDataCtr_getsetters,
        .tp_methods = py_drsuapi_DsReplicaMetaDataCtr_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaMetaDataCtr_new,
 };
 
@@ -7171,10 +8745,18 @@ static int py_drsuapi_DsReplicaObjectListItemEx_set_next_object(PyObject *py_obj
 {
        struct drsuapi_DsReplicaObjectListItemEx *object = (struct drsuapi_DsReplicaObjectListItemEx *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->next_object));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->next_object");
+               return -1;
+       }
        if (value == Py_None) {
                object->next_object = NULL;
        } else {
                object->next_object = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->next_object");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectListItemEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -7196,6 +8778,10 @@ static PyObject *py_drsuapi_DsReplicaObjectListItemEx_get_object(PyObject *obj,
 static int py_drsuapi_DsReplicaObjectListItemEx_set_object(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectListItemEx *object = (struct drsuapi_DsReplicaObjectListItemEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObject_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -7216,6 +8802,10 @@ static PyObject *py_drsuapi_DsReplicaObjectListItemEx_get_is_nc_prefix(PyObject
 static int py_drsuapi_DsReplicaObjectListItemEx_set_is_nc_prefix(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectListItemEx *object = (struct drsuapi_DsReplicaObjectListItemEx *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_nc_prefix");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_nc_prefix));
                if (PyLong_Check(value)) {
@@ -7265,10 +8855,18 @@ static int py_drsuapi_DsReplicaObjectListItemEx_set_parent_object_guid(PyObject
 {
        struct drsuapi_DsReplicaObjectListItemEx *object = (struct drsuapi_DsReplicaObjectListItemEx *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->parent_object_guid));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->parent_object_guid");
+               return -1;
+       }
        if (value == Py_None) {
                object->parent_object_guid = NULL;
        } else {
                object->parent_object_guid = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->parent_object_guid");
+                       return -1;
+               }
                PY_CHECK_TYPE(GUID_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -7296,10 +8894,18 @@ static int py_drsuapi_DsReplicaObjectListItemEx_set_meta_data_ctr(PyObject *py_o
 {
        struct drsuapi_DsReplicaObjectListItemEx *object = (struct drsuapi_DsReplicaObjectListItemEx *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->meta_data_ctr));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->meta_data_ctr");
+               return -1;
+       }
        if (value == Py_None) {
                object->meta_data_ctr = NULL;
        } else {
                object->meta_data_ctr = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->meta_data_ctr");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaMetaDataCtr_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -7311,12 +8917,37 @@ static int py_drsuapi_DsReplicaObjectListItemEx_set_meta_data_ctr(PyObject *py_o
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjectListItemEx_getsetters[] = {
-       { discard_const_p(char, "next_object"), py_drsuapi_DsReplicaObjectListItemEx_get_next_object, py_drsuapi_DsReplicaObjectListItemEx_set_next_object },
-       { discard_const_p(char, "object"), py_drsuapi_DsReplicaObjectListItemEx_get_object, py_drsuapi_DsReplicaObjectListItemEx_set_object },
-       { discard_const_p(char, "is_nc_prefix"), py_drsuapi_DsReplicaObjectListItemEx_get_is_nc_prefix, py_drsuapi_DsReplicaObjectListItemEx_set_is_nc_prefix },
-       { discard_const_p(char, "parent_object_guid"), py_drsuapi_DsReplicaObjectListItemEx_get_parent_object_guid, py_drsuapi_DsReplicaObjectListItemEx_set_parent_object_guid },
-       { discard_const_p(char, "meta_data_ctr"), py_drsuapi_DsReplicaObjectListItemEx_get_meta_data_ctr, py_drsuapi_DsReplicaObjectListItemEx_set_meta_data_ctr },
-       { NULL }
+       {
+               .name = discard_const_p(char, "next_object"),
+               .get = py_drsuapi_DsReplicaObjectListItemEx_get_next_object,
+               .set = py_drsuapi_DsReplicaObjectListItemEx_set_next_object,
+               .doc = discard_const_p(char, "PIDL-generated element next_object")
+       },
+       {
+               .name = discard_const_p(char, "object"),
+               .get = py_drsuapi_DsReplicaObjectListItemEx_get_object,
+               .set = py_drsuapi_DsReplicaObjectListItemEx_set_object,
+               .doc = discard_const_p(char, "PIDL-generated element object")
+       },
+       {
+               .name = discard_const_p(char, "is_nc_prefix"),
+               .get = py_drsuapi_DsReplicaObjectListItemEx_get_is_nc_prefix,
+               .set = py_drsuapi_DsReplicaObjectListItemEx_set_is_nc_prefix,
+               .doc = discard_const_p(char, "PIDL-generated element is_nc_prefix")
+       },
+       {
+               .name = discard_const_p(char, "parent_object_guid"),
+               .get = py_drsuapi_DsReplicaObjectListItemEx_get_parent_object_guid,
+               .set = py_drsuapi_DsReplicaObjectListItemEx_set_parent_object_guid,
+               .doc = discard_const_p(char, "PIDL-generated element parent_object_guid")
+       },
+       {
+               .name = discard_const_p(char, "meta_data_ctr"),
+               .get = py_drsuapi_DsReplicaObjectListItemEx_get_meta_data_ctr,
+               .set = py_drsuapi_DsReplicaObjectListItemEx_set_meta_data_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element meta_data_ctr")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjectListItemEx_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -7327,22 +8958,31 @@ static PyObject *py_drsuapi_DsReplicaObjectListItemEx_new(PyTypeObject *type, Py
 static PyObject *py_drsuapi_DsReplicaObjectListItemEx_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaObjectListItemEx *object = (struct drsuapi_DsReplicaObjectListItemEx *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectListItemEx);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectListItemEx);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaObjectListItemEx_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaObjectListItemEx *object = (struct drsuapi_DsReplicaObjectListItemEx *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -7400,7 +9040,6 @@ static PyTypeObject drsuapi_DsReplicaObjectListItemEx_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjectListItemEx_getsetters,
        .tp_methods = py_drsuapi_DsReplicaObjectListItemEx_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjectListItemEx_new,
 };
 
@@ -7416,6 +9055,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_source_dsa_guid(PyObject *obj
 static int py_drsuapi_DsGetNCChangesCtr1_set_source_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -7436,6 +9079,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_source_dsa_invocation_id(PyOb
 static int py_drsuapi_DsGetNCChangesCtr1_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -7462,10 +9109,18 @@ static int py_drsuapi_DsGetNCChangesCtr1_set_naming_context(PyObject *py_obj, Py
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        if (value == Py_None) {
                object->naming_context = NULL;
        } else {
                object->naming_context = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -7487,6 +9142,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_old_highwatermark(PyObject *o
 static int py_drsuapi_DsGetNCChangesCtr1_set_old_highwatermark(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->old_highwatermark");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaHighWaterMark_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -7507,6 +9166,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_new_highwatermark(PyObject *o
 static int py_drsuapi_DsGetNCChangesCtr1_set_new_highwatermark(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->new_highwatermark");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaHighWaterMark_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -7533,10 +9196,18 @@ static int py_drsuapi_DsGetNCChangesCtr1_set_uptodateness_vector(PyObject *py_ob
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->uptodateness_vector));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->uptodateness_vector");
+               return -1;
+       }
        if (value == Py_None) {
                object->uptodateness_vector = NULL;
        } else {
                object->uptodateness_vector = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->uptodateness_vector");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaCursorCtrEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -7558,6 +9229,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_mapping_ctr(PyObject *obj, vo
 static int py_drsuapi_DsGetNCChangesCtr1_set_mapping_ctr(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mapping_ctr");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaOIDMapping_Ctr_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -7578,6 +9253,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_extended_ret(PyObject *obj, v
 static int py_drsuapi_DsGetNCChangesCtr1_set_extended_ret(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_ret");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_ret));
                if (PyLong_Check(value)) {
@@ -7621,6 +9300,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_object_count(PyObject *obj, v
 static int py_drsuapi_DsGetNCChangesCtr1_set_object_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->object_count));
                if (PyLong_Check(value)) {
@@ -7664,6 +9347,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get___ndr_size(PyObject *obj, voi
 static int py_drsuapi_DsGetNCChangesCtr1_set___ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size));
                if (PyLong_Check(value)) {
@@ -7713,10 +9400,18 @@ static int py_drsuapi_DsGetNCChangesCtr1_set_first_object(PyObject *py_obj, PyOb
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->first_object));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->first_object");
+               return -1;
+       }
        if (value == Py_None) {
                object->first_object = NULL;
        } else {
                object->first_object = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->first_object");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectListItemEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -7738,6 +9433,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_get_more_data(PyObject *obj, void
 static int py_drsuapi_DsGetNCChangesCtr1_set_more_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->more_data");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->more_data));
                if (PyLong_Check(value)) {
@@ -7771,19 +9470,79 @@ static int py_drsuapi_DsGetNCChangesCtr1_set_more_data(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesCtr1_getsetters[] = {
-       { discard_const_p(char, "source_dsa_guid"), py_drsuapi_DsGetNCChangesCtr1_get_source_dsa_guid, py_drsuapi_DsGetNCChangesCtr1_set_source_dsa_guid },
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsGetNCChangesCtr1_get_source_dsa_invocation_id, py_drsuapi_DsGetNCChangesCtr1_set_source_dsa_invocation_id },
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsGetNCChangesCtr1_get_naming_context, py_drsuapi_DsGetNCChangesCtr1_set_naming_context },
-       { discard_const_p(char, "old_highwatermark"), py_drsuapi_DsGetNCChangesCtr1_get_old_highwatermark, py_drsuapi_DsGetNCChangesCtr1_set_old_highwatermark },
-       { discard_const_p(char, "new_highwatermark"), py_drsuapi_DsGetNCChangesCtr1_get_new_highwatermark, py_drsuapi_DsGetNCChangesCtr1_set_new_highwatermark },
-       { discard_const_p(char, "uptodateness_vector"), py_drsuapi_DsGetNCChangesCtr1_get_uptodateness_vector, py_drsuapi_DsGetNCChangesCtr1_set_uptodateness_vector },
-       { discard_const_p(char, "mapping_ctr"), py_drsuapi_DsGetNCChangesCtr1_get_mapping_ctr, py_drsuapi_DsGetNCChangesCtr1_set_mapping_ctr },
-       { discard_const_p(char, "extended_ret"), py_drsuapi_DsGetNCChangesCtr1_get_extended_ret, py_drsuapi_DsGetNCChangesCtr1_set_extended_ret },
-       { discard_const_p(char, "object_count"), py_drsuapi_DsGetNCChangesCtr1_get_object_count, py_drsuapi_DsGetNCChangesCtr1_set_object_count },
-       { discard_const_p(char, "__ndr_size"), py_drsuapi_DsGetNCChangesCtr1_get___ndr_size, py_drsuapi_DsGetNCChangesCtr1_set___ndr_size },
-       { discard_const_p(char, "first_object"), py_drsuapi_DsGetNCChangesCtr1_get_first_object, py_drsuapi_DsGetNCChangesCtr1_set_first_object },
-       { discard_const_p(char, "more_data"), py_drsuapi_DsGetNCChangesCtr1_get_more_data, py_drsuapi_DsGetNCChangesCtr1_set_more_data },
-       { NULL }
+       {
+               .name = discard_const_p(char, "source_dsa_guid"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_source_dsa_guid,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_source_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_naming_context,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "old_highwatermark"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_old_highwatermark,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_old_highwatermark,
+               .doc = discard_const_p(char, "PIDL-generated element old_highwatermark")
+       },
+       {
+               .name = discard_const_p(char, "new_highwatermark"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_new_highwatermark,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_new_highwatermark,
+               .doc = discard_const_p(char, "PIDL-generated element new_highwatermark")
+       },
+       {
+               .name = discard_const_p(char, "uptodateness_vector"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_uptodateness_vector,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_uptodateness_vector,
+               .doc = discard_const_p(char, "PIDL-generated element uptodateness_vector")
+       },
+       {
+               .name = discard_const_p(char, "mapping_ctr"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_mapping_ctr,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_mapping_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element mapping_ctr")
+       },
+       {
+               .name = discard_const_p(char, "extended_ret"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_extended_ret,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_extended_ret,
+               .doc = discard_const_p(char, "PIDL-generated element extended_ret")
+       },
+       {
+               .name = discard_const_p(char, "object_count"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_object_count,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_object_count,
+               .doc = discard_const_p(char, "PIDL-generated element object_count")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get___ndr_size,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set___ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "first_object"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_first_object,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_first_object,
+               .doc = discard_const_p(char, "PIDL-generated element first_object")
+       },
+       {
+               .name = discard_const_p(char, "more_data"),
+               .get = py_drsuapi_DsGetNCChangesCtr1_get_more_data,
+               .set = py_drsuapi_DsGetNCChangesCtr1_set_more_data,
+               .doc = discard_const_p(char, "PIDL-generated element more_data")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -7794,22 +9553,31 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1_new(PyTypeObject *type, PyObject
 static PyObject *py_drsuapi_DsGetNCChangesCtr1_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr1);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr1);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr1_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsGetNCChangesCtr1 *object = (struct drsuapi_DsGetNCChangesCtr1 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -7867,7 +9635,6 @@ static PyTypeObject drsuapi_DsGetNCChangesCtr1_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesCtr1_getsetters,
        .tp_methods = py_drsuapi_DsGetNCChangesCtr1_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesCtr1_new,
 };
 
@@ -7889,10 +9656,18 @@ static int py_drsuapi_DsReplicaLinkedAttribute_set_identifier(PyObject *py_obj,
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->identifier));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->identifier");
+               return -1;
+       }
        if (value == Py_None) {
                object->identifier = NULL;
        } else {
                object->identifier = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->identifier");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -7914,6 +9689,10 @@ static PyObject *py_drsuapi_DsReplicaLinkedAttribute_get_attid(PyObject *obj, vo
 static int py_drsuapi_DsReplicaLinkedAttribute_set_attid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->attid));
                if (PyLong_Check(value)) {
@@ -7957,6 +9736,10 @@ static PyObject *py_drsuapi_DsReplicaLinkedAttribute_get_value(PyObject *obj, vo
 static int py_drsuapi_DsReplicaLinkedAttribute_set_value(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->value");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsAttributeValue_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -7977,6 +9760,10 @@ static PyObject *py_drsuapi_DsReplicaLinkedAttribute_get_flags(PyObject *obj, vo
 static int py_drsuapi_DsReplicaLinkedAttribute_set_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags));
                if (PyLong_Check(value)) {
@@ -8020,6 +9807,10 @@ static PyObject *py_drsuapi_DsReplicaLinkedAttribute_get_originating_add_time(Py
 static int py_drsuapi_DsReplicaLinkedAttribute_set_originating_add_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_add_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_add_time));
                if (PyLong_Check(value)) {
@@ -8063,6 +9854,10 @@ static PyObject *py_drsuapi_DsReplicaLinkedAttribute_get_meta_data(PyObject *obj
 static int py_drsuapi_DsReplicaLinkedAttribute_set_meta_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->meta_data");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaMetaData_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8073,13 +9868,43 @@ static int py_drsuapi_DsReplicaLinkedAttribute_set_meta_data(PyObject *py_obj, P
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaLinkedAttribute_getsetters[] = {
-       { discard_const_p(char, "identifier"), py_drsuapi_DsReplicaLinkedAttribute_get_identifier, py_drsuapi_DsReplicaLinkedAttribute_set_identifier },
-       { discard_const_p(char, "attid"), py_drsuapi_DsReplicaLinkedAttribute_get_attid, py_drsuapi_DsReplicaLinkedAttribute_set_attid },
-       { discard_const_p(char, "value"), py_drsuapi_DsReplicaLinkedAttribute_get_value, py_drsuapi_DsReplicaLinkedAttribute_set_value },
-       { discard_const_p(char, "flags"), py_drsuapi_DsReplicaLinkedAttribute_get_flags, py_drsuapi_DsReplicaLinkedAttribute_set_flags },
-       { discard_const_p(char, "originating_add_time"), py_drsuapi_DsReplicaLinkedAttribute_get_originating_add_time, py_drsuapi_DsReplicaLinkedAttribute_set_originating_add_time },
-       { discard_const_p(char, "meta_data"), py_drsuapi_DsReplicaLinkedAttribute_get_meta_data, py_drsuapi_DsReplicaLinkedAttribute_set_meta_data },
-       { NULL }
+       {
+               .name = discard_const_p(char, "identifier"),
+               .get = py_drsuapi_DsReplicaLinkedAttribute_get_identifier,
+               .set = py_drsuapi_DsReplicaLinkedAttribute_set_identifier,
+               .doc = discard_const_p(char, "PIDL-generated element identifier")
+       },
+       {
+               .name = discard_const_p(char, "attid"),
+               .get = py_drsuapi_DsReplicaLinkedAttribute_get_attid,
+               .set = py_drsuapi_DsReplicaLinkedAttribute_set_attid,
+               .doc = discard_const_p(char, "PIDL-generated element attid")
+       },
+       {
+               .name = discard_const_p(char, "value"),
+               .get = py_drsuapi_DsReplicaLinkedAttribute_get_value,
+               .set = py_drsuapi_DsReplicaLinkedAttribute_set_value,
+               .doc = discard_const_p(char, "PIDL-generated element value")
+       },
+       {
+               .name = discard_const_p(char, "flags"),
+               .get = py_drsuapi_DsReplicaLinkedAttribute_get_flags,
+               .set = py_drsuapi_DsReplicaLinkedAttribute_set_flags,
+               .doc = discard_const_p(char, "PIDL-generated element flags")
+       },
+       {
+               .name = discard_const_p(char, "originating_add_time"),
+               .get = py_drsuapi_DsReplicaLinkedAttribute_get_originating_add_time,
+               .set = py_drsuapi_DsReplicaLinkedAttribute_set_originating_add_time,
+               .doc = discard_const_p(char, "PIDL-generated element originating_add_time")
+       },
+       {
+               .name = discard_const_p(char, "meta_data"),
+               .get = py_drsuapi_DsReplicaLinkedAttribute_get_meta_data,
+               .set = py_drsuapi_DsReplicaLinkedAttribute_set_meta_data,
+               .doc = discard_const_p(char, "PIDL-generated element meta_data")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaLinkedAttribute_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -8090,22 +9915,31 @@ static PyObject *py_drsuapi_DsReplicaLinkedAttribute_new(PyTypeObject *type, PyO
 static PyObject *py_drsuapi_DsReplicaLinkedAttribute_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaLinkedAttribute);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaLinkedAttribute);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaLinkedAttribute_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaLinkedAttribute *object = (struct drsuapi_DsReplicaLinkedAttribute *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -8163,7 +9997,6 @@ static PyTypeObject drsuapi_DsReplicaLinkedAttribute_Type = {
        .tp_getset = py_drsuapi_DsReplicaLinkedAttribute_getsetters,
        .tp_methods = py_drsuapi_DsReplicaLinkedAttribute_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaLinkedAttribute_new,
 };
 
@@ -8179,6 +10012,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_source_dsa_guid(PyObject *obj
 static int py_drsuapi_DsGetNCChangesCtr6_set_source_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8199,6 +10036,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_source_dsa_invocation_id(PyOb
 static int py_drsuapi_DsGetNCChangesCtr6_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8225,10 +10066,18 @@ static int py_drsuapi_DsGetNCChangesCtr6_set_naming_context(PyObject *py_obj, Py
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        if (value == Py_None) {
                object->naming_context = NULL;
        } else {
                object->naming_context = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -8250,6 +10099,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_old_highwatermark(PyObject *o
 static int py_drsuapi_DsGetNCChangesCtr6_set_old_highwatermark(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->old_highwatermark");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaHighWaterMark_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8270,6 +10123,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_new_highwatermark(PyObject *o
 static int py_drsuapi_DsGetNCChangesCtr6_set_new_highwatermark(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->new_highwatermark");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaHighWaterMark_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8296,10 +10153,18 @@ static int py_drsuapi_DsGetNCChangesCtr6_set_uptodateness_vector(PyObject *py_ob
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->uptodateness_vector));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->uptodateness_vector");
+               return -1;
+       }
        if (value == Py_None) {
                object->uptodateness_vector = NULL;
        } else {
                object->uptodateness_vector = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->uptodateness_vector");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaCursor2CtrEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -8321,6 +10186,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_mapping_ctr(PyObject *obj, vo
 static int py_drsuapi_DsGetNCChangesCtr6_set_mapping_ctr(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mapping_ctr");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaOIDMapping_Ctr_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8341,6 +10210,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_extended_ret(PyObject *obj, v
 static int py_drsuapi_DsGetNCChangesCtr6_set_extended_ret(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_ret");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_ret));
                if (PyLong_Check(value)) {
@@ -8384,6 +10257,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_object_count(PyObject *obj, v
 static int py_drsuapi_DsGetNCChangesCtr6_set_object_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->object_count));
                if (PyLong_Check(value)) {
@@ -8427,6 +10304,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get___ndr_size(PyObject *obj, voi
 static int py_drsuapi_DsGetNCChangesCtr6_set___ndr_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size));
                if (PyLong_Check(value)) {
@@ -8476,10 +10357,18 @@ static int py_drsuapi_DsGetNCChangesCtr6_set_first_object(PyObject *py_obj, PyOb
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->first_object));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->first_object");
+               return -1;
+       }
        if (value == Py_None) {
                object->first_object = NULL;
        } else {
                object->first_object = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->first_object");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectListItemEx_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -8501,6 +10390,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_more_data(PyObject *obj, void
 static int py_drsuapi_DsGetNCChangesCtr6_set_more_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->more_data");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->more_data));
                if (PyLong_Check(value)) {
@@ -8544,6 +10437,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_nc_object_count(PyObject *obj
 static int py_drsuapi_DsGetNCChangesCtr6_set_nc_object_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->nc_object_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->nc_object_count));
                if (PyLong_Check(value)) {
@@ -8587,6 +10484,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_nc_linked_attributes_count(Py
 static int py_drsuapi_DsGetNCChangesCtr6_set_nc_linked_attributes_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->nc_linked_attributes_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->nc_linked_attributes_count));
                if (PyLong_Check(value)) {
@@ -8630,6 +10531,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_linked_attributes_count(PyObj
 static int py_drsuapi_DsGetNCChangesCtr6_set_linked_attributes_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->linked_attributes_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->linked_attributes_count));
                if (PyLong_Check(value)) {
@@ -8690,10 +10595,18 @@ static int py_drsuapi_DsGetNCChangesCtr6_set_linked_attributes(PyObject *py_obj,
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->linked_attributes));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->linked_attributes");
+               return -1;
+       }
        if (value == Py_None) {
                object->linked_attributes = NULL;
        } else {
                object->linked_attributes = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->linked_attributes");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int linked_attributes_cntr_1;
@@ -8701,6 +10614,10 @@ static int py_drsuapi_DsGetNCChangesCtr6_set_linked_attributes(PyObject *py_obj,
                        if (!object->linked_attributes) { return -1;; }
                        talloc_set_name_const(object->linked_attributes, "ARRAY: object->linked_attributes");
                        for (linked_attributes_cntr_1 = 0; linked_attributes_cntr_1 < PyList_GET_SIZE(value); linked_attributes_cntr_1++) {
+                               if (PyList_GET_ITEM(value, linked_attributes_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->linked_attributes[linked_attributes_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaLinkedAttribute_Type, PyList_GET_ITEM(value, linked_attributes_cntr_1), return -1;);
                                if (talloc_reference(object->linked_attributes, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, linked_attributes_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -8724,29 +10641,118 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_get_drs_error(PyObject *obj, void
 static int py_drsuapi_DsGetNCChangesCtr6_set_drs_error(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->drs_error");
+               return -1;
+       }
        object->drs_error = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesCtr6_getsetters[] = {
-       { discard_const_p(char, "source_dsa_guid"), py_drsuapi_DsGetNCChangesCtr6_get_source_dsa_guid, py_drsuapi_DsGetNCChangesCtr6_set_source_dsa_guid },
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsGetNCChangesCtr6_get_source_dsa_invocation_id, py_drsuapi_DsGetNCChangesCtr6_set_source_dsa_invocation_id },
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsGetNCChangesCtr6_get_naming_context, py_drsuapi_DsGetNCChangesCtr6_set_naming_context },
-       { discard_const_p(char, "old_highwatermark"), py_drsuapi_DsGetNCChangesCtr6_get_old_highwatermark, py_drsuapi_DsGetNCChangesCtr6_set_old_highwatermark },
-       { discard_const_p(char, "new_highwatermark"), py_drsuapi_DsGetNCChangesCtr6_get_new_highwatermark, py_drsuapi_DsGetNCChangesCtr6_set_new_highwatermark },
-       { discard_const_p(char, "uptodateness_vector"), py_drsuapi_DsGetNCChangesCtr6_get_uptodateness_vector, py_drsuapi_DsGetNCChangesCtr6_set_uptodateness_vector },
-       { discard_const_p(char, "mapping_ctr"), py_drsuapi_DsGetNCChangesCtr6_get_mapping_ctr, py_drsuapi_DsGetNCChangesCtr6_set_mapping_ctr },
-       { discard_const_p(char, "extended_ret"), py_drsuapi_DsGetNCChangesCtr6_get_extended_ret, py_drsuapi_DsGetNCChangesCtr6_set_extended_ret },
-       { discard_const_p(char, "object_count"), py_drsuapi_DsGetNCChangesCtr6_get_object_count, py_drsuapi_DsGetNCChangesCtr6_set_object_count },
-       { discard_const_p(char, "__ndr_size"), py_drsuapi_DsGetNCChangesCtr6_get___ndr_size, py_drsuapi_DsGetNCChangesCtr6_set___ndr_size },
-       { discard_const_p(char, "first_object"), py_drsuapi_DsGetNCChangesCtr6_get_first_object, py_drsuapi_DsGetNCChangesCtr6_set_first_object },
-       { discard_const_p(char, "more_data"), py_drsuapi_DsGetNCChangesCtr6_get_more_data, py_drsuapi_DsGetNCChangesCtr6_set_more_data },
-       { discard_const_p(char, "nc_object_count"), py_drsuapi_DsGetNCChangesCtr6_get_nc_object_count, py_drsuapi_DsGetNCChangesCtr6_set_nc_object_count },
-       { discard_const_p(char, "nc_linked_attributes_count"), py_drsuapi_DsGetNCChangesCtr6_get_nc_linked_attributes_count, py_drsuapi_DsGetNCChangesCtr6_set_nc_linked_attributes_count },
-       { discard_const_p(char, "linked_attributes_count"), py_drsuapi_DsGetNCChangesCtr6_get_linked_attributes_count, py_drsuapi_DsGetNCChangesCtr6_set_linked_attributes_count },
-       { discard_const_p(char, "linked_attributes"), py_drsuapi_DsGetNCChangesCtr6_get_linked_attributes, py_drsuapi_DsGetNCChangesCtr6_set_linked_attributes },
-       { discard_const_p(char, "drs_error"), py_drsuapi_DsGetNCChangesCtr6_get_drs_error, py_drsuapi_DsGetNCChangesCtr6_set_drs_error },
-       { NULL }
+       {
+               .name = discard_const_p(char, "source_dsa_guid"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_source_dsa_guid,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_source_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_naming_context,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "old_highwatermark"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_old_highwatermark,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_old_highwatermark,
+               .doc = discard_const_p(char, "PIDL-generated element old_highwatermark")
+       },
+       {
+               .name = discard_const_p(char, "new_highwatermark"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_new_highwatermark,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_new_highwatermark,
+               .doc = discard_const_p(char, "PIDL-generated element new_highwatermark")
+       },
+       {
+               .name = discard_const_p(char, "uptodateness_vector"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_uptodateness_vector,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_uptodateness_vector,
+               .doc = discard_const_p(char, "PIDL-generated element uptodateness_vector")
+       },
+       {
+               .name = discard_const_p(char, "mapping_ctr"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_mapping_ctr,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_mapping_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element mapping_ctr")
+       },
+       {
+               .name = discard_const_p(char, "extended_ret"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_extended_ret,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_extended_ret,
+               .doc = discard_const_p(char, "PIDL-generated element extended_ret")
+       },
+       {
+               .name = discard_const_p(char, "object_count"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_object_count,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_object_count,
+               .doc = discard_const_p(char, "PIDL-generated element object_count")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get___ndr_size,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set___ndr_size,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size")
+       },
+       {
+               .name = discard_const_p(char, "first_object"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_first_object,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_first_object,
+               .doc = discard_const_p(char, "PIDL-generated element first_object")
+       },
+       {
+               .name = discard_const_p(char, "more_data"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_more_data,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_more_data,
+               .doc = discard_const_p(char, "PIDL-generated element more_data")
+       },
+       {
+               .name = discard_const_p(char, "nc_object_count"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_nc_object_count,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_nc_object_count,
+               .doc = discard_const_p(char, "PIDL-generated element nc_object_count")
+       },
+       {
+               .name = discard_const_p(char, "nc_linked_attributes_count"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_nc_linked_attributes_count,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_nc_linked_attributes_count,
+               .doc = discard_const_p(char, "PIDL-generated element nc_linked_attributes_count")
+       },
+       {
+               .name = discard_const_p(char, "linked_attributes_count"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_linked_attributes_count,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_linked_attributes_count,
+               .doc = discard_const_p(char, "PIDL-generated element linked_attributes_count")
+       },
+       {
+               .name = discard_const_p(char, "linked_attributes"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_linked_attributes,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_linked_attributes,
+               .doc = discard_const_p(char, "PIDL-generated element linked_attributes")
+       },
+       {
+               .name = discard_const_p(char, "drs_error"),
+               .get = py_drsuapi_DsGetNCChangesCtr6_get_drs_error,
+               .set = py_drsuapi_DsGetNCChangesCtr6_set_drs_error,
+               .doc = discard_const_p(char, "PIDL-generated element drs_error")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr6_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -8757,22 +10763,31 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6_new(PyTypeObject *type, PyObject
 static PyObject *py_drsuapi_DsGetNCChangesCtr6_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr6);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr6);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr6_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsGetNCChangesCtr6 *object = (struct drsuapi_DsGetNCChangesCtr6 *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -8830,7 +10845,6 @@ static PyTypeObject drsuapi_DsGetNCChangesCtr6_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesCtr6_getsetters,
        .tp_methods = py_drsuapi_DsGetNCChangesCtr6_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesCtr6_new,
 };
 
@@ -8846,6 +10860,14 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1TS_get_ctr1(PyObject *obj, void *c
 static int py_drsuapi_DsGetNCChangesCtr1TS_set_ctr1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr1TS *object = (struct drsuapi_DsGetNCChangesCtr1TS *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ctr1");
+               return -1;
+       }
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ctr1");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr1_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8856,8 +10878,13 @@ static int py_drsuapi_DsGetNCChangesCtr1TS_set_ctr1(PyObject *py_obj, PyObject *
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesCtr1TS_getsetters[] = {
-       { discard_const_p(char, "ctr1"), py_drsuapi_DsGetNCChangesCtr1TS_get_ctr1, py_drsuapi_DsGetNCChangesCtr1TS_set_ctr1 },
-       { NULL }
+       {
+               .name = discard_const_p(char, "ctr1"),
+               .get = py_drsuapi_DsGetNCChangesCtr1TS_get_ctr1,
+               .set = py_drsuapi_DsGetNCChangesCtr1TS_set_ctr1,
+               .doc = discard_const_p(char, "PIDL-generated element ctr1")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr1TS_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -8868,22 +10895,31 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr1TS_new(PyTypeObject *type, PyObjec
 static PyObject *py_drsuapi_DsGetNCChangesCtr1TS_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsGetNCChangesCtr1TS *object = (struct drsuapi_DsGetNCChangesCtr1TS *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr1TS);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr1TS);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr1TS_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsGetNCChangesCtr1TS *object = (struct drsuapi_DsGetNCChangesCtr1TS *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -8941,7 +10977,6 @@ static PyTypeObject drsuapi_DsGetNCChangesCtr1TS_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesCtr1TS_getsetters,
        .tp_methods = py_drsuapi_DsGetNCChangesCtr1TS_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesCtr1TS_new,
 };
 
@@ -8957,6 +10992,14 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6TS_get_ctr6(PyObject *obj, void *c
 static int py_drsuapi_DsGetNCChangesCtr6TS_set_ctr6(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr6TS *object = (struct drsuapi_DsGetNCChangesCtr6TS *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ctr6");
+               return -1;
+       }
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ctr6");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr6_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -8967,8 +11010,13 @@ static int py_drsuapi_DsGetNCChangesCtr6TS_set_ctr6(PyObject *py_obj, PyObject *
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesCtr6TS_getsetters[] = {
-       { discard_const_p(char, "ctr6"), py_drsuapi_DsGetNCChangesCtr6TS_get_ctr6, py_drsuapi_DsGetNCChangesCtr6TS_set_ctr6 },
-       { NULL }
+       {
+               .name = discard_const_p(char, "ctr6"),
+               .get = py_drsuapi_DsGetNCChangesCtr6TS_get_ctr6,
+               .set = py_drsuapi_DsGetNCChangesCtr6TS_set_ctr6,
+               .doc = discard_const_p(char, "PIDL-generated element ctr6")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr6TS_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -8979,22 +11027,31 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr6TS_new(PyTypeObject *type, PyObjec
 static PyObject *py_drsuapi_DsGetNCChangesCtr6TS_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsGetNCChangesCtr6TS *object = (struct drsuapi_DsGetNCChangesCtr6TS *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr6TS);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr6TS);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr6TS_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsGetNCChangesCtr6TS *object = (struct drsuapi_DsGetNCChangesCtr6TS *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -9052,7 +11109,6 @@ static PyTypeObject drsuapi_DsGetNCChangesCtr6TS_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesCtr6TS_getsetters,
        .tp_methods = py_drsuapi_DsGetNCChangesCtr6TS_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesCtr6TS_new,
 };
 
@@ -9068,6 +11124,10 @@ static PyObject *py_drsuapi_DsGetNCChangesMSZIPCtr1_get_decompressed_length(PyOb
 static int py_drsuapi_DsGetNCChangesMSZIPCtr1_set_decompressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesMSZIPCtr1 *object = (struct drsuapi_DsGetNCChangesMSZIPCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->decompressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->decompressed_length));
                if (PyLong_Check(value)) {
@@ -9111,6 +11171,10 @@ static PyObject *py_drsuapi_DsGetNCChangesMSZIPCtr1_get_compressed_length(PyObje
 static int py_drsuapi_DsGetNCChangesMSZIPCtr1_set_compressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesMSZIPCtr1 *object = (struct drsuapi_DsGetNCChangesMSZIPCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->compressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->compressed_length));
                if (PyLong_Check(value)) {
@@ -9160,10 +11224,18 @@ static int py_drsuapi_DsGetNCChangesMSZIPCtr1_set_ts(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsGetNCChangesMSZIPCtr1 *object = (struct drsuapi_DsGetNCChangesMSZIPCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->ts));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ts");
+               return -1;
+       }
        if (value == Py_None) {
                object->ts = NULL;
        } else {
                object->ts = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ts");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr1TS_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -9175,10 +11247,25 @@ static int py_drsuapi_DsGetNCChangesMSZIPCtr1_set_ts(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesMSZIPCtr1_getsetters[] = {
-       { discard_const_p(char, "decompressed_length"), py_drsuapi_DsGetNCChangesMSZIPCtr1_get_decompressed_length, py_drsuapi_DsGetNCChangesMSZIPCtr1_set_decompressed_length },
-       { discard_const_p(char, "compressed_length"), py_drsuapi_DsGetNCChangesMSZIPCtr1_get_compressed_length, py_drsuapi_DsGetNCChangesMSZIPCtr1_set_compressed_length },
-       { discard_const_p(char, "ts"), py_drsuapi_DsGetNCChangesMSZIPCtr1_get_ts, py_drsuapi_DsGetNCChangesMSZIPCtr1_set_ts },
-       { NULL }
+       {
+               .name = discard_const_p(char, "decompressed_length"),
+               .get = py_drsuapi_DsGetNCChangesMSZIPCtr1_get_decompressed_length,
+               .set = py_drsuapi_DsGetNCChangesMSZIPCtr1_set_decompressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element decompressed_length")
+       },
+       {
+               .name = discard_const_p(char, "compressed_length"),
+               .get = py_drsuapi_DsGetNCChangesMSZIPCtr1_get_compressed_length,
+               .set = py_drsuapi_DsGetNCChangesMSZIPCtr1_set_compressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element compressed_length")
+       },
+       {
+               .name = discard_const_p(char, "ts"),
+               .get = py_drsuapi_DsGetNCChangesMSZIPCtr1_get_ts,
+               .set = py_drsuapi_DsGetNCChangesMSZIPCtr1_set_ts,
+               .doc = discard_const_p(char, "PIDL-generated element ts")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesMSZIPCtr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -9193,7 +11280,6 @@ static PyTypeObject drsuapi_DsGetNCChangesMSZIPCtr1_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesMSZIPCtr1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesMSZIPCtr1_new,
 };
 
@@ -9209,6 +11295,10 @@ static PyObject *py_drsuapi_DsGetNCChangesMSZIPCtr6_get_decompressed_length(PyOb
 static int py_drsuapi_DsGetNCChangesMSZIPCtr6_set_decompressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesMSZIPCtr6 *object = (struct drsuapi_DsGetNCChangesMSZIPCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->decompressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->decompressed_length));
                if (PyLong_Check(value)) {
@@ -9252,6 +11342,10 @@ static PyObject *py_drsuapi_DsGetNCChangesMSZIPCtr6_get_compressed_length(PyObje
 static int py_drsuapi_DsGetNCChangesMSZIPCtr6_set_compressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesMSZIPCtr6 *object = (struct drsuapi_DsGetNCChangesMSZIPCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->compressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->compressed_length));
                if (PyLong_Check(value)) {
@@ -9301,10 +11395,18 @@ static int py_drsuapi_DsGetNCChangesMSZIPCtr6_set_ts(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsGetNCChangesMSZIPCtr6 *object = (struct drsuapi_DsGetNCChangesMSZIPCtr6 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->ts));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ts");
+               return -1;
+       }
        if (value == Py_None) {
                object->ts = NULL;
        } else {
                object->ts = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ts");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr6TS_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -9316,10 +11418,25 @@ static int py_drsuapi_DsGetNCChangesMSZIPCtr6_set_ts(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesMSZIPCtr6_getsetters[] = {
-       { discard_const_p(char, "decompressed_length"), py_drsuapi_DsGetNCChangesMSZIPCtr6_get_decompressed_length, py_drsuapi_DsGetNCChangesMSZIPCtr6_set_decompressed_length },
-       { discard_const_p(char, "compressed_length"), py_drsuapi_DsGetNCChangesMSZIPCtr6_get_compressed_length, py_drsuapi_DsGetNCChangesMSZIPCtr6_set_compressed_length },
-       { discard_const_p(char, "ts"), py_drsuapi_DsGetNCChangesMSZIPCtr6_get_ts, py_drsuapi_DsGetNCChangesMSZIPCtr6_set_ts },
-       { NULL }
+       {
+               .name = discard_const_p(char, "decompressed_length"),
+               .get = py_drsuapi_DsGetNCChangesMSZIPCtr6_get_decompressed_length,
+               .set = py_drsuapi_DsGetNCChangesMSZIPCtr6_set_decompressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element decompressed_length")
+       },
+       {
+               .name = discard_const_p(char, "compressed_length"),
+               .get = py_drsuapi_DsGetNCChangesMSZIPCtr6_get_compressed_length,
+               .set = py_drsuapi_DsGetNCChangesMSZIPCtr6_set_compressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element compressed_length")
+       },
+       {
+               .name = discard_const_p(char, "ts"),
+               .get = py_drsuapi_DsGetNCChangesMSZIPCtr6_get_ts,
+               .set = py_drsuapi_DsGetNCChangesMSZIPCtr6_set_ts,
+               .doc = discard_const_p(char, "PIDL-generated element ts")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesMSZIPCtr6_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -9334,7 +11451,6 @@ static PyTypeObject drsuapi_DsGetNCChangesMSZIPCtr6_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesMSZIPCtr6_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesMSZIPCtr6_new,
 };
 
@@ -9350,6 +11466,10 @@ static PyObject *py_drsuapi_DsGetNCChangesXPRESSCtr1_get_decompressed_length(PyO
 static int py_drsuapi_DsGetNCChangesXPRESSCtr1_set_decompressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesXPRESSCtr1 *object = (struct drsuapi_DsGetNCChangesXPRESSCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->decompressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->decompressed_length));
                if (PyLong_Check(value)) {
@@ -9393,6 +11513,10 @@ static PyObject *py_drsuapi_DsGetNCChangesXPRESSCtr1_get_compressed_length(PyObj
 static int py_drsuapi_DsGetNCChangesXPRESSCtr1_set_compressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesXPRESSCtr1 *object = (struct drsuapi_DsGetNCChangesXPRESSCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->compressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->compressed_length));
                if (PyLong_Check(value)) {
@@ -9442,10 +11566,18 @@ static int py_drsuapi_DsGetNCChangesXPRESSCtr1_set_ts(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsGetNCChangesXPRESSCtr1 *object = (struct drsuapi_DsGetNCChangesXPRESSCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->ts));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ts");
+               return -1;
+       }
        if (value == Py_None) {
                object->ts = NULL;
        } else {
                object->ts = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ts");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr1TS_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -9457,10 +11589,25 @@ static int py_drsuapi_DsGetNCChangesXPRESSCtr1_set_ts(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesXPRESSCtr1_getsetters[] = {
-       { discard_const_p(char, "decompressed_length"), py_drsuapi_DsGetNCChangesXPRESSCtr1_get_decompressed_length, py_drsuapi_DsGetNCChangesXPRESSCtr1_set_decompressed_length },
-       { discard_const_p(char, "compressed_length"), py_drsuapi_DsGetNCChangesXPRESSCtr1_get_compressed_length, py_drsuapi_DsGetNCChangesXPRESSCtr1_set_compressed_length },
-       { discard_const_p(char, "ts"), py_drsuapi_DsGetNCChangesXPRESSCtr1_get_ts, py_drsuapi_DsGetNCChangesXPRESSCtr1_set_ts },
-       { NULL }
+       {
+               .name = discard_const_p(char, "decompressed_length"),
+               .get = py_drsuapi_DsGetNCChangesXPRESSCtr1_get_decompressed_length,
+               .set = py_drsuapi_DsGetNCChangesXPRESSCtr1_set_decompressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element decompressed_length")
+       },
+       {
+               .name = discard_const_p(char, "compressed_length"),
+               .get = py_drsuapi_DsGetNCChangesXPRESSCtr1_get_compressed_length,
+               .set = py_drsuapi_DsGetNCChangesXPRESSCtr1_set_compressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element compressed_length")
+       },
+       {
+               .name = discard_const_p(char, "ts"),
+               .get = py_drsuapi_DsGetNCChangesXPRESSCtr1_get_ts,
+               .set = py_drsuapi_DsGetNCChangesXPRESSCtr1_set_ts,
+               .doc = discard_const_p(char, "PIDL-generated element ts")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesXPRESSCtr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -9475,7 +11622,6 @@ static PyTypeObject drsuapi_DsGetNCChangesXPRESSCtr1_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesXPRESSCtr1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesXPRESSCtr1_new,
 };
 
@@ -9491,6 +11637,10 @@ static PyObject *py_drsuapi_DsGetNCChangesXPRESSCtr6_get_decompressed_length(PyO
 static int py_drsuapi_DsGetNCChangesXPRESSCtr6_set_decompressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesXPRESSCtr6 *object = (struct drsuapi_DsGetNCChangesXPRESSCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->decompressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->decompressed_length));
                if (PyLong_Check(value)) {
@@ -9534,6 +11684,10 @@ static PyObject *py_drsuapi_DsGetNCChangesXPRESSCtr6_get_compressed_length(PyObj
 static int py_drsuapi_DsGetNCChangesXPRESSCtr6_set_compressed_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesXPRESSCtr6 *object = (struct drsuapi_DsGetNCChangesXPRESSCtr6 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->compressed_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->compressed_length));
                if (PyLong_Check(value)) {
@@ -9583,10 +11737,18 @@ static int py_drsuapi_DsGetNCChangesXPRESSCtr6_set_ts(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsGetNCChangesXPRESSCtr6 *object = (struct drsuapi_DsGetNCChangesXPRESSCtr6 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->ts));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ts");
+               return -1;
+       }
        if (value == Py_None) {
                object->ts = NULL;
        } else {
                object->ts = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ts");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr6TS_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -9598,10 +11760,25 @@ static int py_drsuapi_DsGetNCChangesXPRESSCtr6_set_ts(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesXPRESSCtr6_getsetters[] = {
-       { discard_const_p(char, "decompressed_length"), py_drsuapi_DsGetNCChangesXPRESSCtr6_get_decompressed_length, py_drsuapi_DsGetNCChangesXPRESSCtr6_set_decompressed_length },
-       { discard_const_p(char, "compressed_length"), py_drsuapi_DsGetNCChangesXPRESSCtr6_get_compressed_length, py_drsuapi_DsGetNCChangesXPRESSCtr6_set_compressed_length },
-       { discard_const_p(char, "ts"), py_drsuapi_DsGetNCChangesXPRESSCtr6_get_ts, py_drsuapi_DsGetNCChangesXPRESSCtr6_set_ts },
-       { NULL }
+       {
+               .name = discard_const_p(char, "decompressed_length"),
+               .get = py_drsuapi_DsGetNCChangesXPRESSCtr6_get_decompressed_length,
+               .set = py_drsuapi_DsGetNCChangesXPRESSCtr6_set_decompressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element decompressed_length")
+       },
+       {
+               .name = discard_const_p(char, "compressed_length"),
+               .get = py_drsuapi_DsGetNCChangesXPRESSCtr6_get_compressed_length,
+               .set = py_drsuapi_DsGetNCChangesXPRESSCtr6_set_compressed_length,
+               .doc = discard_const_p(char, "PIDL-generated element compressed_length")
+       },
+       {
+               .name = discard_const_p(char, "ts"),
+               .get = py_drsuapi_DsGetNCChangesXPRESSCtr6_get_ts,
+               .set = py_drsuapi_DsGetNCChangesXPRESSCtr6_set_ts,
+               .doc = discard_const_p(char, "PIDL-generated element ts")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesXPRESSCtr6_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -9616,7 +11793,6 @@ static PyTypeObject drsuapi_DsGetNCChangesXPRESSCtr6_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesXPRESSCtr6_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesXPRESSCtr6_new,
 };
 
@@ -9651,6 +11827,10 @@ union drsuapi_DsGetNCChangesCompressedCtr *py_export_drsuapi_DsGetNCChangesCompr
        union drsuapi_DsGetNCChangesCompressedCtr *ret = talloc_zero(mem_ctx, union drsuapi_DsGetNCChangesCompressedCtr);
        switch (level) {
                case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->mszip1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesMSZIPCtr1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -9660,6 +11840,10 @@ union drsuapi_DsGetNCChangesCompressedCtr *py_export_drsuapi_DsGetNCChangesCompr
                        break;
 
                case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->mszip6");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesMSZIPCtr6_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -9669,6 +11853,10 @@ union drsuapi_DsGetNCChangesCompressedCtr *py_export_drsuapi_DsGetNCChangesCompr
                        break;
 
                case 1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->xpress1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesXPRESSCtr1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -9678,6 +11866,10 @@ union drsuapi_DsGetNCChangesCompressedCtr *py_export_drsuapi_DsGetNCChangesCompr
                        break;
 
                case 6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->xpress6");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesXPRESSCtr6_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -9707,6 +11899,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr2_get_mszip1(PyObject *obj, void *c
 static int py_drsuapi_DsGetNCChangesCtr2_set_mszip1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr2 *object = (struct drsuapi_DsGetNCChangesCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mszip1");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesMSZIPCtr1_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -9717,8 +11913,13 @@ static int py_drsuapi_DsGetNCChangesCtr2_set_mszip1(PyObject *py_obj, PyObject *
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesCtr2_getsetters[] = {
-       { discard_const_p(char, "mszip1"), py_drsuapi_DsGetNCChangesCtr2_get_mszip1, py_drsuapi_DsGetNCChangesCtr2_set_mszip1 },
-       { NULL }
+       {
+               .name = discard_const_p(char, "mszip1"),
+               .get = py_drsuapi_DsGetNCChangesCtr2_get_mszip1,
+               .set = py_drsuapi_DsGetNCChangesCtr2_set_mszip1,
+               .doc = discard_const_p(char, "PIDL-generated element mszip1")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -9733,7 +11934,6 @@ static PyTypeObject drsuapi_DsGetNCChangesCtr2_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesCtr2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesCtr2_new,
 };
 
@@ -9749,6 +11949,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr7_get_level(PyObject *obj, void *cl
 static int py_drsuapi_DsGetNCChangesCtr7_set_level(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr7 *object = (struct drsuapi_DsGetNCChangesCtr7 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->level");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->level));
                if (PyLong_Check(value)) {
@@ -9792,6 +11996,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr7_get_type(PyObject *obj, void *clo
 static int py_drsuapi_DsGetNCChangesCtr7_set_type(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr7 *object = (struct drsuapi_DsGetNCChangesCtr7 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->type");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->type));
                if (PyLong_Check(value)) {
@@ -9838,6 +12046,10 @@ static PyObject *py_drsuapi_DsGetNCChangesCtr7_get_ctr(PyObject *obj, void *clos
 static int py_drsuapi_DsGetNCChangesCtr7_set_ctr(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNCChangesCtr7 *object = (struct drsuapi_DsGetNCChangesCtr7 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ctr");
+               return -1;
+       }
        {
                union drsuapi_DsGetNCChangesCompressedCtr *ctr_switch_0;
                ctr_switch_0 = py_export_drsuapi_DsGetNCChangesCompressedCtr(pytalloc_get_mem_ctx(py_obj), object->level | (object->type << 16), value);
@@ -9850,10 +12062,25 @@ static int py_drsuapi_DsGetNCChangesCtr7_set_ctr(PyObject *py_obj, PyObject *val
 }
 
 static PyGetSetDef py_drsuapi_DsGetNCChangesCtr7_getsetters[] = {
-       { discard_const_p(char, "level"), py_drsuapi_DsGetNCChangesCtr7_get_level, py_drsuapi_DsGetNCChangesCtr7_set_level },
-       { discard_const_p(char, "type"), py_drsuapi_DsGetNCChangesCtr7_get_type, py_drsuapi_DsGetNCChangesCtr7_set_type },
-       { discard_const_p(char, "ctr"), py_drsuapi_DsGetNCChangesCtr7_get_ctr, py_drsuapi_DsGetNCChangesCtr7_set_ctr },
-       { NULL }
+       {
+               .name = discard_const_p(char, "level"),
+               .get = py_drsuapi_DsGetNCChangesCtr7_get_level,
+               .set = py_drsuapi_DsGetNCChangesCtr7_set_level,
+               .doc = discard_const_p(char, "PIDL-generated element level")
+       },
+       {
+               .name = discard_const_p(char, "type"),
+               .get = py_drsuapi_DsGetNCChangesCtr7_get_type,
+               .set = py_drsuapi_DsGetNCChangesCtr7_set_type,
+               .doc = discard_const_p(char, "PIDL-generated element type")
+       },
+       {
+               .name = discard_const_p(char, "ctr"),
+               .get = py_drsuapi_DsGetNCChangesCtr7_get_ctr,
+               .set = py_drsuapi_DsGetNCChangesCtr7_set_ctr,
+               .doc = discard_const_p(char, "PIDL-generated element ctr")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNCChangesCtr7_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -9868,7 +12095,6 @@ static PyTypeObject drsuapi_DsGetNCChangesCtr7_Type = {
        .tp_getset = py_drsuapi_DsGetNCChangesCtr7_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNCChangesCtr7_new,
 };
 
@@ -9903,6 +12129,10 @@ union drsuapi_DsGetNCChangesCtr *py_export_drsuapi_DsGetNCChangesCtr(TALLOC_CTX
        union drsuapi_DsGetNCChangesCtr *ret = talloc_zero(mem_ctx, union drsuapi_DsGetNCChangesCtr);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -9912,6 +12142,10 @@ union drsuapi_DsGetNCChangesCtr *py_export_drsuapi_DsGetNCChangesCtr(TALLOC_CTX
                        break;
 
                case 2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr2");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr2_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -9921,7 +12155,11 @@ union drsuapi_DsGetNCChangesCtr *py_export_drsuapi_DsGetNCChangesCtr(TALLOC_CTX
                        break;
 
                case 6:
-                       PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr6_Type, in, talloc_free(ret); return NULL;);
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr6");
+                               talloc_free(ret); return NULL;
+                       }
+                       PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr6_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
                                talloc_free(ret); return NULL;
@@ -9930,6 +12168,10 @@ union drsuapi_DsGetNCChangesCtr *py_export_drsuapi_DsGetNCChangesCtr(TALLOC_CTX
                        break;
 
                case 7:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr7");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNCChangesCtr7_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -9960,7 +12202,15 @@ static int py_drsuapi_DsReplicaUpdateRefsRequest1_set_naming_context(PyObject *p
 {
        struct drsuapi_DsReplicaUpdateRefsRequest1 *object = (struct drsuapi_DsReplicaUpdateRefsRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -9986,15 +12236,42 @@ static PyObject *py_drsuapi_DsReplicaUpdateRefsRequest1_get_dest_dsa_dns_name(Py
 static int py_drsuapi_DsReplicaUpdateRefsRequest1_set_dest_dsa_dns_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaUpdateRefsRequest1 *object = (struct drsuapi_DsReplicaUpdateRefsRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dest_dsa_dns_name");
+               return -1;
+       }
        object->dest_dsa_dns_name = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->dest_dsa_dns_name);
-       if (PyUnicode_Check(value)) {
-               object->dest_dsa_dns_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-       } else if (PyString_Check(value)) {
-               object->dest_dsa_dns_name = PyString_AS_STRING(value);
-       } else {
-               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->dest_dsa_dns_name");
                return -1;
        }
+       {
+               const char *test_str;
+               const char *talloc_str;
+               PyObject *unicode = NULL;
+               if (PyUnicode_Check(value)) {
+                       unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                       if (unicode == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       test_str = PyString_AS_STRING(unicode);
+               } else if (PyString_Check(value)) {
+                       test_str = PyString_AS_STRING(value);
+               } else {
+                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                       return -1;
+               }
+               talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+               if (unicode != NULL) {
+                       Py_DECREF(unicode);
+               }
+               if (talloc_str == NULL) {
+                       PyErr_NoMemory();
+                       return -1;
+               }
+               object->dest_dsa_dns_name = talloc_str;
+       }
        return 0;
 }
 
@@ -10009,6 +12286,10 @@ static PyObject *py_drsuapi_DsReplicaUpdateRefsRequest1_get_dest_dsa_guid(PyObje
 static int py_drsuapi_DsReplicaUpdateRefsRequest1_set_dest_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaUpdateRefsRequest1 *object = (struct drsuapi_DsReplicaUpdateRefsRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dest_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -10029,6 +12310,10 @@ static PyObject *py_drsuapi_DsReplicaUpdateRefsRequest1_get_options(PyObject *ob
 static int py_drsuapi_DsReplicaUpdateRefsRequest1_set_options(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaUpdateRefsRequest1 *object = (struct drsuapi_DsReplicaUpdateRefsRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->options");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->options));
                if (PyLong_Check(value)) {
@@ -10062,11 +12347,31 @@ static int py_drsuapi_DsReplicaUpdateRefsRequest1_set_options(PyObject *py_obj,
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaUpdateRefsRequest1_getsetters[] = {
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsReplicaUpdateRefsRequest1_get_naming_context, py_drsuapi_DsReplicaUpdateRefsRequest1_set_naming_context },
-       { discard_const_p(char, "dest_dsa_dns_name"), py_drsuapi_DsReplicaUpdateRefsRequest1_get_dest_dsa_dns_name, py_drsuapi_DsReplicaUpdateRefsRequest1_set_dest_dsa_dns_name },
-       { discard_const_p(char, "dest_dsa_guid"), py_drsuapi_DsReplicaUpdateRefsRequest1_get_dest_dsa_guid, py_drsuapi_DsReplicaUpdateRefsRequest1_set_dest_dsa_guid },
-       { discard_const_p(char, "options"), py_drsuapi_DsReplicaUpdateRefsRequest1_get_options, py_drsuapi_DsReplicaUpdateRefsRequest1_set_options },
-       { NULL }
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsReplicaUpdateRefsRequest1_get_naming_context,
+               .set = py_drsuapi_DsReplicaUpdateRefsRequest1_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "dest_dsa_dns_name"),
+               .get = py_drsuapi_DsReplicaUpdateRefsRequest1_get_dest_dsa_dns_name,
+               .set = py_drsuapi_DsReplicaUpdateRefsRequest1_set_dest_dsa_dns_name,
+               .doc = discard_const_p(char, "PIDL-generated element dest_dsa_dns_name")
+       },
+       {
+               .name = discard_const_p(char, "dest_dsa_guid"),
+               .get = py_drsuapi_DsReplicaUpdateRefsRequest1_get_dest_dsa_guid,
+               .set = py_drsuapi_DsReplicaUpdateRefsRequest1_set_dest_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element dest_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "options"),
+               .get = py_drsuapi_DsReplicaUpdateRefsRequest1_get_options,
+               .set = py_drsuapi_DsReplicaUpdateRefsRequest1_set_options,
+               .doc = discard_const_p(char, "PIDL-generated element options")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaUpdateRefsRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -10081,7 +12386,6 @@ static PyTypeObject drsuapi_DsReplicaUpdateRefsRequest1_Type = {
        .tp_getset = py_drsuapi_DsReplicaUpdateRefsRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaUpdateRefsRequest1_new,
 };
 
@@ -10104,6 +12408,10 @@ union drsuapi_DsReplicaUpdateRefsRequest *py_export_drsuapi_DsReplicaUpdateRefsR
        union drsuapi_DsReplicaUpdateRefsRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsReplicaUpdateRefsRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaUpdateRefsRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -10134,7 +12442,15 @@ static int py_drsuapi_DsReplicaAddRequest1_set_naming_context(PyObject *py_obj,
 {
        struct drsuapi_DsReplicaAddRequest1 *object = (struct drsuapi_DsReplicaAddRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -10165,18 +12481,45 @@ static PyObject *py_drsuapi_DsReplicaAddRequest1_get_source_dsa_address(PyObject
 static int py_drsuapi_DsReplicaAddRequest1_set_source_dsa_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAddRequest1 *object = (struct drsuapi_DsReplicaAddRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_address");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_address = NULL;
        } else {
                object->source_dsa_address = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_address");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dsa_address = talloc_str;
+               }
        }
        return 0;
 }
@@ -10203,6 +12546,10 @@ static PyObject *py_drsuapi_DsReplicaAddRequest1_get_schedule(PyObject *obj, voi
 static int py_drsuapi_DsReplicaAddRequest1_set_schedule(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAddRequest1 *object = (struct drsuapi_DsReplicaAddRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->schedule");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int schedule_cntr_0;
@@ -10211,6 +12558,10 @@ static int py_drsuapi_DsReplicaAddRequest1_set_schedule(PyObject *py_obj, PyObje
                        return -1;
                }
                for (schedule_cntr_0 = 0; schedule_cntr_0 < PyList_GET_SIZE(value); schedule_cntr_0++) {
+                       if (PyList_GET_ITEM(value, schedule_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->schedule[schedule_cntr_0]");
+                               return -1;
+                       }
                        {
                                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->schedule[schedule_cntr_0]));
                                if (PyLong_Check(PyList_GET_ITEM(value, schedule_cntr_0))) {
@@ -10256,6 +12607,10 @@ static PyObject *py_drsuapi_DsReplicaAddRequest1_get_options(PyObject *obj, void
 static int py_drsuapi_DsReplicaAddRequest1_set_options(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAddRequest1 *object = (struct drsuapi_DsReplicaAddRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->options");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->options));
                if (PyLong_Check(value)) {
@@ -10289,11 +12644,31 @@ static int py_drsuapi_DsReplicaAddRequest1_set_options(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAddRequest1_getsetters[] = {
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsReplicaAddRequest1_get_naming_context, py_drsuapi_DsReplicaAddRequest1_set_naming_context },
-       { discard_const_p(char, "source_dsa_address"), py_drsuapi_DsReplicaAddRequest1_get_source_dsa_address, py_drsuapi_DsReplicaAddRequest1_set_source_dsa_address },
-       { discard_const_p(char, "schedule"), py_drsuapi_DsReplicaAddRequest1_get_schedule, py_drsuapi_DsReplicaAddRequest1_set_schedule },
-       { discard_const_p(char, "options"), py_drsuapi_DsReplicaAddRequest1_get_options, py_drsuapi_DsReplicaAddRequest1_set_options },
-       { NULL }
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsReplicaAddRequest1_get_naming_context,
+               .set = py_drsuapi_DsReplicaAddRequest1_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_address"),
+               .get = py_drsuapi_DsReplicaAddRequest1_get_source_dsa_address,
+               .set = py_drsuapi_DsReplicaAddRequest1_set_source_dsa_address,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_address")
+       },
+       {
+               .name = discard_const_p(char, "schedule"),
+               .get = py_drsuapi_DsReplicaAddRequest1_get_schedule,
+               .set = py_drsuapi_DsReplicaAddRequest1_set_schedule,
+               .doc = discard_const_p(char, "PIDL-generated element schedule")
+       },
+       {
+               .name = discard_const_p(char, "options"),
+               .get = py_drsuapi_DsReplicaAddRequest1_get_options,
+               .set = py_drsuapi_DsReplicaAddRequest1_set_options,
+               .doc = discard_const_p(char, "PIDL-generated element options")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAddRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -10308,7 +12683,6 @@ static PyTypeObject drsuapi_DsReplicaAddRequest1_Type = {
        .tp_getset = py_drsuapi_DsReplicaAddRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAddRequest1_new,
 };
 
@@ -10325,7 +12699,15 @@ static int py_drsuapi_DsReplicaAddRequest2_set_naming_context(PyObject *py_obj,
 {
        struct drsuapi_DsReplicaAddRequest2 *object = (struct drsuapi_DsReplicaAddRequest2 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -10352,10 +12734,18 @@ static int py_drsuapi_DsReplicaAddRequest2_set_source_dsa_dn(PyObject *py_obj, P
 {
        struct drsuapi_DsReplicaAddRequest2 *object = (struct drsuapi_DsReplicaAddRequest2 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->source_dsa_dn));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_dn = NULL;
        } else {
                object->source_dsa_dn = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_dn");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -10383,10 +12773,18 @@ static int py_drsuapi_DsReplicaAddRequest2_set_transport_dn(PyObject *py_obj, Py
 {
        struct drsuapi_DsReplicaAddRequest2 *object = (struct drsuapi_DsReplicaAddRequest2 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->transport_dn));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->transport_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->transport_dn = NULL;
        } else {
                object->transport_dn = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->transport_dn");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -10418,18 +12816,45 @@ static PyObject *py_drsuapi_DsReplicaAddRequest2_get_source_dsa_address(PyObject
 static int py_drsuapi_DsReplicaAddRequest2_set_source_dsa_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAddRequest2 *object = (struct drsuapi_DsReplicaAddRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_address");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_address = NULL;
        } else {
                object->source_dsa_address = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_address");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dsa_address = talloc_str;
+               }
        }
        return 0;
 }
@@ -10456,6 +12881,10 @@ static PyObject *py_drsuapi_DsReplicaAddRequest2_get_schedule(PyObject *obj, voi
 static int py_drsuapi_DsReplicaAddRequest2_set_schedule(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAddRequest2 *object = (struct drsuapi_DsReplicaAddRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->schedule");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int schedule_cntr_0;
@@ -10464,6 +12893,10 @@ static int py_drsuapi_DsReplicaAddRequest2_set_schedule(PyObject *py_obj, PyObje
                        return -1;
                }
                for (schedule_cntr_0 = 0; schedule_cntr_0 < PyList_GET_SIZE(value); schedule_cntr_0++) {
+                       if (PyList_GET_ITEM(value, schedule_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->schedule[schedule_cntr_0]");
+                               return -1;
+                       }
                        {
                                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->schedule[schedule_cntr_0]));
                                if (PyLong_Check(PyList_GET_ITEM(value, schedule_cntr_0))) {
@@ -10509,6 +12942,10 @@ static PyObject *py_drsuapi_DsReplicaAddRequest2_get_options(PyObject *obj, void
 static int py_drsuapi_DsReplicaAddRequest2_set_options(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAddRequest2 *object = (struct drsuapi_DsReplicaAddRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->options");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->options));
                if (PyLong_Check(value)) {
@@ -10542,13 +12979,43 @@ static int py_drsuapi_DsReplicaAddRequest2_set_options(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAddRequest2_getsetters[] = {
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsReplicaAddRequest2_get_naming_context, py_drsuapi_DsReplicaAddRequest2_set_naming_context },
-       { discard_const_p(char, "source_dsa_dn"), py_drsuapi_DsReplicaAddRequest2_get_source_dsa_dn, py_drsuapi_DsReplicaAddRequest2_set_source_dsa_dn },
-       { discard_const_p(char, "transport_dn"), py_drsuapi_DsReplicaAddRequest2_get_transport_dn, py_drsuapi_DsReplicaAddRequest2_set_transport_dn },
-       { discard_const_p(char, "source_dsa_address"), py_drsuapi_DsReplicaAddRequest2_get_source_dsa_address, py_drsuapi_DsReplicaAddRequest2_set_source_dsa_address },
-       { discard_const_p(char, "schedule"), py_drsuapi_DsReplicaAddRequest2_get_schedule, py_drsuapi_DsReplicaAddRequest2_set_schedule },
-       { discard_const_p(char, "options"), py_drsuapi_DsReplicaAddRequest2_get_options, py_drsuapi_DsReplicaAddRequest2_set_options },
-       { NULL }
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsReplicaAddRequest2_get_naming_context,
+               .set = py_drsuapi_DsReplicaAddRequest2_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_dn"),
+               .get = py_drsuapi_DsReplicaAddRequest2_get_source_dsa_dn,
+               .set = py_drsuapi_DsReplicaAddRequest2_set_source_dsa_dn,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_dn")
+       },
+       {
+               .name = discard_const_p(char, "transport_dn"),
+               .get = py_drsuapi_DsReplicaAddRequest2_get_transport_dn,
+               .set = py_drsuapi_DsReplicaAddRequest2_set_transport_dn,
+               .doc = discard_const_p(char, "PIDL-generated element transport_dn")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_address"),
+               .get = py_drsuapi_DsReplicaAddRequest2_get_source_dsa_address,
+               .set = py_drsuapi_DsReplicaAddRequest2_set_source_dsa_address,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_address")
+       },
+       {
+               .name = discard_const_p(char, "schedule"),
+               .get = py_drsuapi_DsReplicaAddRequest2_get_schedule,
+               .set = py_drsuapi_DsReplicaAddRequest2_set_schedule,
+               .doc = discard_const_p(char, "PIDL-generated element schedule")
+       },
+       {
+               .name = discard_const_p(char, "options"),
+               .get = py_drsuapi_DsReplicaAddRequest2_get_options,
+               .set = py_drsuapi_DsReplicaAddRequest2_set_options,
+               .doc = discard_const_p(char, "PIDL-generated element options")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAddRequest2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -10563,7 +13030,6 @@ static PyTypeObject drsuapi_DsReplicaAddRequest2_Type = {
        .tp_getset = py_drsuapi_DsReplicaAddRequest2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAddRequest2_new,
 };
 
@@ -10590,6 +13056,10 @@ union drsuapi_DsReplicaAddRequest *py_export_drsuapi_DsReplicaAddRequest(TALLOC_
        union drsuapi_DsReplicaAddRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsReplicaAddRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaAddRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -10599,6 +13069,10 @@ union drsuapi_DsReplicaAddRequest *py_export_drsuapi_DsReplicaAddRequest(TALLOC_
                        break;
 
                case 2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req2");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaAddRequest2_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -10629,7 +13103,15 @@ static int py_drsuapi_DsReplicaDelRequest1_set_naming_context(PyObject *py_obj,
 {
        struct drsuapi_DsReplicaDelRequest1 *object = (struct drsuapi_DsReplicaDelRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -10660,18 +13142,45 @@ static PyObject *py_drsuapi_DsReplicaDelRequest1_get_source_dsa_address(PyObject
 static int py_drsuapi_DsReplicaDelRequest1_set_source_dsa_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaDelRequest1 *object = (struct drsuapi_DsReplicaDelRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_address");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_address = NULL;
        } else {
                object->source_dsa_address = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_address");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dsa_address = talloc_str;
+               }
        }
        return 0;
 }
@@ -10687,6 +13196,10 @@ static PyObject *py_drsuapi_DsReplicaDelRequest1_get_options(PyObject *obj, void
 static int py_drsuapi_DsReplicaDelRequest1_set_options(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaDelRequest1 *object = (struct drsuapi_DsReplicaDelRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->options");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->options));
                if (PyLong_Check(value)) {
@@ -10720,10 +13233,25 @@ static int py_drsuapi_DsReplicaDelRequest1_set_options(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaDelRequest1_getsetters[] = {
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsReplicaDelRequest1_get_naming_context, py_drsuapi_DsReplicaDelRequest1_set_naming_context },
-       { discard_const_p(char, "source_dsa_address"), py_drsuapi_DsReplicaDelRequest1_get_source_dsa_address, py_drsuapi_DsReplicaDelRequest1_set_source_dsa_address },
-       { discard_const_p(char, "options"), py_drsuapi_DsReplicaDelRequest1_get_options, py_drsuapi_DsReplicaDelRequest1_set_options },
-       { NULL }
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsReplicaDelRequest1_get_naming_context,
+               .set = py_drsuapi_DsReplicaDelRequest1_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_address"),
+               .get = py_drsuapi_DsReplicaDelRequest1_get_source_dsa_address,
+               .set = py_drsuapi_DsReplicaDelRequest1_set_source_dsa_address,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_address")
+       },
+       {
+               .name = discard_const_p(char, "options"),
+               .get = py_drsuapi_DsReplicaDelRequest1_get_options,
+               .set = py_drsuapi_DsReplicaDelRequest1_set_options,
+               .doc = discard_const_p(char, "PIDL-generated element options")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaDelRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -10738,7 +13266,6 @@ static PyTypeObject drsuapi_DsReplicaDelRequest1_Type = {
        .tp_getset = py_drsuapi_DsReplicaDelRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaDelRequest1_new,
 };
 
@@ -10761,6 +13288,10 @@ union drsuapi_DsReplicaDelRequest *py_export_drsuapi_DsReplicaDelRequest(TALLOC_
        union drsuapi_DsReplicaDelRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsReplicaDelRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaDelRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -10791,7 +13322,15 @@ static int py_drsuapi_DsReplicaModRequest1_set_naming_context(PyObject *py_obj,
 {
        struct drsuapi_DsReplicaModRequest1 *object = (struct drsuapi_DsReplicaModRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->naming_context));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context");
+               return -1;
+       }
        object->naming_context = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->naming_context);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -10812,6 +13351,10 @@ static PyObject *py_drsuapi_DsReplicaModRequest1_get_source_dra(PyObject *obj, v
 static int py_drsuapi_DsReplicaModRequest1_set_source_dra(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaModRequest1 *object = (struct drsuapi_DsReplicaModRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dra");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -10842,18 +13385,45 @@ static PyObject *py_drsuapi_DsReplicaModRequest1_get_source_dra_address(PyObject
 static int py_drsuapi_DsReplicaModRequest1_set_source_dra_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaModRequest1 *object = (struct drsuapi_DsReplicaModRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dra_address");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dra_address = NULL;
        } else {
                object->source_dra_address = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dra_address = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dra_address = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dra_address");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dra_address = talloc_str;
+               }
        }
        return 0;
 }
@@ -10880,6 +13450,10 @@ static PyObject *py_drsuapi_DsReplicaModRequest1_get_schedule(PyObject *obj, voi
 static int py_drsuapi_DsReplicaModRequest1_set_schedule(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaModRequest1 *object = (struct drsuapi_DsReplicaModRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->schedule");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int schedule_cntr_0;
@@ -10888,6 +13462,10 @@ static int py_drsuapi_DsReplicaModRequest1_set_schedule(PyObject *py_obj, PyObje
                        return -1;
                }
                for (schedule_cntr_0 = 0; schedule_cntr_0 < PyList_GET_SIZE(value); schedule_cntr_0++) {
+                       if (PyList_GET_ITEM(value, schedule_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->schedule[schedule_cntr_0]");
+                               return -1;
+                       }
                        {
                                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->schedule[schedule_cntr_0]));
                                if (PyLong_Check(PyList_GET_ITEM(value, schedule_cntr_0))) {
@@ -10933,6 +13511,10 @@ static PyObject *py_drsuapi_DsReplicaModRequest1_get_replica_flags(PyObject *obj
 static int py_drsuapi_DsReplicaModRequest1_set_replica_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaModRequest1 *object = (struct drsuapi_DsReplicaModRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->replica_flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->replica_flags));
                if (PyLong_Check(value)) {
@@ -10976,6 +13558,10 @@ static PyObject *py_drsuapi_DsReplicaModRequest1_get_modify_fields(PyObject *obj
 static int py_drsuapi_DsReplicaModRequest1_set_modify_fields(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaModRequest1 *object = (struct drsuapi_DsReplicaModRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->modify_fields");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->modify_fields));
                if (PyLong_Check(value)) {
@@ -11019,6 +13605,10 @@ static PyObject *py_drsuapi_DsReplicaModRequest1_get_options(PyObject *obj, void
 static int py_drsuapi_DsReplicaModRequest1_set_options(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaModRequest1 *object = (struct drsuapi_DsReplicaModRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->options");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->options));
                if (PyLong_Check(value)) {
@@ -11052,14 +13642,49 @@ static int py_drsuapi_DsReplicaModRequest1_set_options(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaModRequest1_getsetters[] = {
-       { discard_const_p(char, "naming_context"), py_drsuapi_DsReplicaModRequest1_get_naming_context, py_drsuapi_DsReplicaModRequest1_set_naming_context },
-       { discard_const_p(char, "source_dra"), py_drsuapi_DsReplicaModRequest1_get_source_dra, py_drsuapi_DsReplicaModRequest1_set_source_dra },
-       { discard_const_p(char, "source_dra_address"), py_drsuapi_DsReplicaModRequest1_get_source_dra_address, py_drsuapi_DsReplicaModRequest1_set_source_dra_address },
-       { discard_const_p(char, "schedule"), py_drsuapi_DsReplicaModRequest1_get_schedule, py_drsuapi_DsReplicaModRequest1_set_schedule },
-       { discard_const_p(char, "replica_flags"), py_drsuapi_DsReplicaModRequest1_get_replica_flags, py_drsuapi_DsReplicaModRequest1_set_replica_flags },
-       { discard_const_p(char, "modify_fields"), py_drsuapi_DsReplicaModRequest1_get_modify_fields, py_drsuapi_DsReplicaModRequest1_set_modify_fields },
-       { discard_const_p(char, "options"), py_drsuapi_DsReplicaModRequest1_get_options, py_drsuapi_DsReplicaModRequest1_set_options },
-       { NULL }
+       {
+               .name = discard_const_p(char, "naming_context"),
+               .get = py_drsuapi_DsReplicaModRequest1_get_naming_context,
+               .set = py_drsuapi_DsReplicaModRequest1_set_naming_context,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context")
+       },
+       {
+               .name = discard_const_p(char, "source_dra"),
+               .get = py_drsuapi_DsReplicaModRequest1_get_source_dra,
+               .set = py_drsuapi_DsReplicaModRequest1_set_source_dra,
+               .doc = discard_const_p(char, "PIDL-generated element source_dra")
+       },
+       {
+               .name = discard_const_p(char, "source_dra_address"),
+               .get = py_drsuapi_DsReplicaModRequest1_get_source_dra_address,
+               .set = py_drsuapi_DsReplicaModRequest1_set_source_dra_address,
+               .doc = discard_const_p(char, "PIDL-generated element source_dra_address")
+       },
+       {
+               .name = discard_const_p(char, "schedule"),
+               .get = py_drsuapi_DsReplicaModRequest1_get_schedule,
+               .set = py_drsuapi_DsReplicaModRequest1_set_schedule,
+               .doc = discard_const_p(char, "PIDL-generated element schedule")
+       },
+       {
+               .name = discard_const_p(char, "replica_flags"),
+               .get = py_drsuapi_DsReplicaModRequest1_get_replica_flags,
+               .set = py_drsuapi_DsReplicaModRequest1_set_replica_flags,
+               .doc = discard_const_p(char, "PIDL-generated element replica_flags")
+       },
+       {
+               .name = discard_const_p(char, "modify_fields"),
+               .get = py_drsuapi_DsReplicaModRequest1_get_modify_fields,
+               .set = py_drsuapi_DsReplicaModRequest1_set_modify_fields,
+               .doc = discard_const_p(char, "PIDL-generated element modify_fields")
+       },
+       {
+               .name = discard_const_p(char, "options"),
+               .get = py_drsuapi_DsReplicaModRequest1_get_options,
+               .set = py_drsuapi_DsReplicaModRequest1_set_options,
+               .doc = discard_const_p(char, "PIDL-generated element options")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaModRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -11074,7 +13699,6 @@ static PyTypeObject drsuapi_DsReplicaModRequest1_Type = {
        .tp_getset = py_drsuapi_DsReplicaModRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaModRequest1_new,
 };
 
@@ -11097,6 +13721,10 @@ union drsuapi_DsReplicaModRequest *py_export_drsuapi_DsReplicaModRequest(TALLOC_
        union drsuapi_DsReplicaModRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsReplicaModRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaModRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -11126,6 +13754,10 @@ static PyObject *py_drsuapi_DsGetMembershipsCtr1_get_status(PyObject *obj, void
 static int py_drsuapi_DsGetMembershipsCtr1_set_status(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMembershipsCtr1 *object = (struct drsuapi_DsGetMembershipsCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->status");
+               return -1;
+       }
        object->status = NT_STATUS(PyInt_AsLong(value));
        return 0;
 }
@@ -11141,6 +13773,10 @@ static PyObject *py_drsuapi_DsGetMembershipsCtr1_get_num_memberships(PyObject *o
 static int py_drsuapi_DsGetMembershipsCtr1_set_num_memberships(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMembershipsCtr1 *object = (struct drsuapi_DsGetMembershipsCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_memberships");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_memberships));
                if (PyLong_Check(value)) {
@@ -11184,6 +13820,10 @@ static PyObject *py_drsuapi_DsGetMembershipsCtr1_get_num_sids(PyObject *obj, voi
 static int py_drsuapi_DsGetMembershipsCtr1_set_num_sids(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMembershipsCtr1 *object = (struct drsuapi_DsGetMembershipsCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_sids");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_sids));
                if (PyLong_Check(value)) {
@@ -11249,10 +13889,18 @@ static int py_drsuapi_DsGetMembershipsCtr1_set_info_array(PyObject *py_obj, PyOb
 {
        struct drsuapi_DsGetMembershipsCtr1 *object = (struct drsuapi_DsGetMembershipsCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->info_array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info_array");
+               return -1;
+       }
        if (value == Py_None) {
                object->info_array = NULL;
        } else {
                object->info_array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->info_array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int info_array_cntr_1;
@@ -11260,10 +13908,18 @@ static int py_drsuapi_DsGetMembershipsCtr1_set_info_array(PyObject *py_obj, PyOb
                        if (!object->info_array) { return -1;; }
                        talloc_set_name_const(object->info_array, "ARRAY: object->info_array");
                        for (info_array_cntr_1 = 0; info_array_cntr_1 < PyList_GET_SIZE(value); info_array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, info_array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info_array[info_array_cntr_1]");
+                                       return -1;
+                               }
                                if (PyList_GET_ITEM(value, info_array_cntr_1) == Py_None) {
                                        object->info_array[info_array_cntr_1] = NULL;
                                } else {
                                        object->info_array[info_array_cntr_1] = NULL;
+                                       if (PyList_GET_ITEM(value, info_array_cntr_1) == NULL) {
+                                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->info_array[info_array_cntr_1]");
+                                               return -1;
+                                       }
                                        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, PyList_GET_ITEM(value, info_array_cntr_1), return -1;);
                                        if (talloc_reference(object->info_array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, info_array_cntr_1))) == NULL) {
                                                PyErr_NoMemory();
@@ -11305,10 +13961,18 @@ static int py_drsuapi_DsGetMembershipsCtr1_set_group_attrs(PyObject *py_obj, PyO
 {
        struct drsuapi_DsGetMembershipsCtr1 *object = (struct drsuapi_DsGetMembershipsCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->group_attrs));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->group_attrs");
+               return -1;
+       }
        if (value == Py_None) {
                object->group_attrs = NULL;
        } else {
                object->group_attrs = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->group_attrs");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int group_attrs_cntr_1;
@@ -11316,6 +13980,10 @@ static int py_drsuapi_DsGetMembershipsCtr1_set_group_attrs(PyObject *py_obj, PyO
                        if (!object->group_attrs) { return -1;; }
                        talloc_set_name_const(object->group_attrs, "ARRAY: object->group_attrs");
                        for (group_attrs_cntr_1 = 0; group_attrs_cntr_1 < PyList_GET_SIZE(value); group_attrs_cntr_1++) {
+                               if (PyList_GET_ITEM(value, group_attrs_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->group_attrs[group_attrs_cntr_1]");
+                                       return -1;
+                               }
                                {
                                        const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->group_attrs[group_attrs_cntr_1]));
                                        if (PyLong_Check(PyList_GET_ITEM(value, group_attrs_cntr_1))) {
@@ -11384,10 +14052,18 @@ static int py_drsuapi_DsGetMembershipsCtr1_set_sids(PyObject *py_obj, PyObject *
 {
        struct drsuapi_DsGetMembershipsCtr1 *object = (struct drsuapi_DsGetMembershipsCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->sids));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sids");
+               return -1;
+       }
        if (value == Py_None) {
                object->sids = NULL;
        } else {
                object->sids = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->sids");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int sids_cntr_1;
@@ -11395,10 +14071,18 @@ static int py_drsuapi_DsGetMembershipsCtr1_set_sids(PyObject *py_obj, PyObject *
                        if (!object->sids) { return -1;; }
                        talloc_set_name_const(object->sids, "ARRAY: object->sids");
                        for (sids_cntr_1 = 0; sids_cntr_1 < PyList_GET_SIZE(value); sids_cntr_1++) {
+                               if (PyList_GET_ITEM(value, sids_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sids[sids_cntr_1]");
+                                       return -1;
+                               }
                                if (PyList_GET_ITEM(value, sids_cntr_1) == Py_None) {
                                        object->sids[sids_cntr_1] = NULL;
                                } else {
                                        object->sids[sids_cntr_1] = NULL;
+                                       if (PyList_GET_ITEM(value, sids_cntr_1) == NULL) {
+                                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->sids[sids_cntr_1]");
+                                               return -1;
+                                       }
                                        PY_CHECK_TYPE(dom_sid_Type, PyList_GET_ITEM(value, sids_cntr_1), return -1;);
                                        if (talloc_reference(object->sids, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, sids_cntr_1))) == NULL) {
                                                PyErr_NoMemory();
@@ -11413,13 +14097,43 @@ static int py_drsuapi_DsGetMembershipsCtr1_set_sids(PyObject *py_obj, PyObject *
 }
 
 static PyGetSetDef py_drsuapi_DsGetMembershipsCtr1_getsetters[] = {
-       { discard_const_p(char, "status"), py_drsuapi_DsGetMembershipsCtr1_get_status, py_drsuapi_DsGetMembershipsCtr1_set_status },
-       { discard_const_p(char, "num_memberships"), py_drsuapi_DsGetMembershipsCtr1_get_num_memberships, py_drsuapi_DsGetMembershipsCtr1_set_num_memberships },
-       { discard_const_p(char, "num_sids"), py_drsuapi_DsGetMembershipsCtr1_get_num_sids, py_drsuapi_DsGetMembershipsCtr1_set_num_sids },
-       { discard_const_p(char, "info_array"), py_drsuapi_DsGetMembershipsCtr1_get_info_array, py_drsuapi_DsGetMembershipsCtr1_set_info_array },
-       { discard_const_p(char, "group_attrs"), py_drsuapi_DsGetMembershipsCtr1_get_group_attrs, py_drsuapi_DsGetMembershipsCtr1_set_group_attrs },
-       { discard_const_p(char, "sids"), py_drsuapi_DsGetMembershipsCtr1_get_sids, py_drsuapi_DsGetMembershipsCtr1_set_sids },
-       { NULL }
+       {
+               .name = discard_const_p(char, "status"),
+               .get = py_drsuapi_DsGetMembershipsCtr1_get_status,
+               .set = py_drsuapi_DsGetMembershipsCtr1_set_status,
+               .doc = discard_const_p(char, "PIDL-generated element status")
+       },
+       {
+               .name = discard_const_p(char, "num_memberships"),
+               .get = py_drsuapi_DsGetMembershipsCtr1_get_num_memberships,
+               .set = py_drsuapi_DsGetMembershipsCtr1_set_num_memberships,
+               .doc = discard_const_p(char, "PIDL-generated element num_memberships")
+       },
+       {
+               .name = discard_const_p(char, "num_sids"),
+               .get = py_drsuapi_DsGetMembershipsCtr1_get_num_sids,
+               .set = py_drsuapi_DsGetMembershipsCtr1_set_num_sids,
+               .doc = discard_const_p(char, "PIDL-generated element num_sids")
+       },
+       {
+               .name = discard_const_p(char, "info_array"),
+               .get = py_drsuapi_DsGetMembershipsCtr1_get_info_array,
+               .set = py_drsuapi_DsGetMembershipsCtr1_set_info_array,
+               .doc = discard_const_p(char, "PIDL-generated element info_array")
+       },
+       {
+               .name = discard_const_p(char, "group_attrs"),
+               .get = py_drsuapi_DsGetMembershipsCtr1_get_group_attrs,
+               .set = py_drsuapi_DsGetMembershipsCtr1_set_group_attrs,
+               .doc = discard_const_p(char, "PIDL-generated element group_attrs")
+       },
+       {
+               .name = discard_const_p(char, "sids"),
+               .get = py_drsuapi_DsGetMembershipsCtr1_get_sids,
+               .set = py_drsuapi_DsGetMembershipsCtr1_set_sids,
+               .doc = discard_const_p(char, "PIDL-generated element sids")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetMembershipsCtr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -11434,7 +14148,6 @@ static PyTypeObject drsuapi_DsGetMembershipsCtr1_Type = {
        .tp_getset = py_drsuapi_DsGetMembershipsCtr1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetMembershipsCtr1_new,
 };
 
@@ -11457,6 +14170,10 @@ union drsuapi_DsGetMembershipsCtr *py_export_drsuapi_DsGetMembershipsCtr(TALLOC_
        union drsuapi_DsGetMembershipsCtr *ret = talloc_zero(mem_ctx, union drsuapi_DsGetMembershipsCtr);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetMembershipsCtr1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -11486,6 +14203,10 @@ static PyObject *py_drsuapi_DsGetMembershipsRequest1_get_count(PyObject *obj, vo
 static int py_drsuapi_DsGetMembershipsRequest1_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMembershipsRequest1 *object = (struct drsuapi_DsGetMembershipsRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -11551,10 +14272,18 @@ static int py_drsuapi_DsGetMembershipsRequest1_set_info_array(PyObject *py_obj,
 {
        struct drsuapi_DsGetMembershipsRequest1 *object = (struct drsuapi_DsGetMembershipsRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->info_array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info_array");
+               return -1;
+       }
        if (value == Py_None) {
                object->info_array = NULL;
        } else {
                object->info_array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->info_array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int info_array_cntr_1;
@@ -11562,10 +14291,18 @@ static int py_drsuapi_DsGetMembershipsRequest1_set_info_array(PyObject *py_obj,
                        if (!object->info_array) { return -1;; }
                        talloc_set_name_const(object->info_array, "ARRAY: object->info_array");
                        for (info_array_cntr_1 = 0; info_array_cntr_1 < PyList_GET_SIZE(value); info_array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, info_array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info_array[info_array_cntr_1]");
+                                       return -1;
+                               }
                                if (PyList_GET_ITEM(value, info_array_cntr_1) == Py_None) {
                                        object->info_array[info_array_cntr_1] = NULL;
                                } else {
                                        object->info_array[info_array_cntr_1] = NULL;
+                                       if (PyList_GET_ITEM(value, info_array_cntr_1) == NULL) {
+                                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->info_array[info_array_cntr_1]");
+                                               return -1;
+                                       }
                                        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, PyList_GET_ITEM(value, info_array_cntr_1), return -1;);
                                        if (talloc_reference(object->info_array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, info_array_cntr_1))) == NULL) {
                                                PyErr_NoMemory();
@@ -11590,6 +14327,10 @@ static PyObject *py_drsuapi_DsGetMembershipsRequest1_get_flags(PyObject *obj, vo
 static int py_drsuapi_DsGetMembershipsRequest1_set_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMembershipsRequest1 *object = (struct drsuapi_DsGetMembershipsRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags));
                if (PyLong_Check(value)) {
@@ -11633,6 +14374,10 @@ static PyObject *py_drsuapi_DsGetMembershipsRequest1_get_type(PyObject *obj, voi
 static int py_drsuapi_DsGetMembershipsRequest1_set_type(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMembershipsRequest1 *object = (struct drsuapi_DsGetMembershipsRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->type");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->type));
                if (PyLong_Check(value)) {
@@ -11682,10 +14427,18 @@ static int py_drsuapi_DsGetMembershipsRequest1_set_domain(PyObject *py_obj, PyOb
 {
        struct drsuapi_DsGetMembershipsRequest1 *object = (struct drsuapi_DsGetMembershipsRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->domain));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->domain");
+               return -1;
+       }
        if (value == Py_None) {
                object->domain = NULL;
        } else {
                object->domain = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->domain");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -11697,12 +14450,37 @@ static int py_drsuapi_DsGetMembershipsRequest1_set_domain(PyObject *py_obj, PyOb
 }
 
 static PyGetSetDef py_drsuapi_DsGetMembershipsRequest1_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsGetMembershipsRequest1_get_count, py_drsuapi_DsGetMembershipsRequest1_set_count },
-       { discard_const_p(char, "info_array"), py_drsuapi_DsGetMembershipsRequest1_get_info_array, py_drsuapi_DsGetMembershipsRequest1_set_info_array },
-       { discard_const_p(char, "flags"), py_drsuapi_DsGetMembershipsRequest1_get_flags, py_drsuapi_DsGetMembershipsRequest1_set_flags },
-       { discard_const_p(char, "type"), py_drsuapi_DsGetMembershipsRequest1_get_type, py_drsuapi_DsGetMembershipsRequest1_set_type },
-       { discard_const_p(char, "domain"), py_drsuapi_DsGetMembershipsRequest1_get_domain, py_drsuapi_DsGetMembershipsRequest1_set_domain },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsGetMembershipsRequest1_get_count,
+               .set = py_drsuapi_DsGetMembershipsRequest1_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "info_array"),
+               .get = py_drsuapi_DsGetMembershipsRequest1_get_info_array,
+               .set = py_drsuapi_DsGetMembershipsRequest1_set_info_array,
+               .doc = discard_const_p(char, "PIDL-generated element info_array")
+       },
+       {
+               .name = discard_const_p(char, "flags"),
+               .get = py_drsuapi_DsGetMembershipsRequest1_get_flags,
+               .set = py_drsuapi_DsGetMembershipsRequest1_set_flags,
+               .doc = discard_const_p(char, "PIDL-generated element flags")
+       },
+       {
+               .name = discard_const_p(char, "type"),
+               .get = py_drsuapi_DsGetMembershipsRequest1_get_type,
+               .set = py_drsuapi_DsGetMembershipsRequest1_set_type,
+               .doc = discard_const_p(char, "PIDL-generated element type")
+       },
+       {
+               .name = discard_const_p(char, "domain"),
+               .get = py_drsuapi_DsGetMembershipsRequest1_get_domain,
+               .set = py_drsuapi_DsGetMembershipsRequest1_set_domain,
+               .doc = discard_const_p(char, "PIDL-generated element domain")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetMembershipsRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -11717,7 +14495,6 @@ static PyTypeObject drsuapi_DsGetMembershipsRequest1_Type = {
        .tp_getset = py_drsuapi_DsGetMembershipsRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetMembershipsRequest1_new,
 };
 
@@ -11740,6 +14517,10 @@ union drsuapi_DsGetMembershipsRequest *py_export_drsuapi_DsGetMembershipsRequest
        union drsuapi_DsGetMembershipsRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsGetMembershipsRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetMembershipsRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -11769,6 +14550,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogRequest1_get_flags(PyObject *obj, v
 static int py_drsuapi_DsGetNT4ChangeLogRequest1_set_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogRequest1 *object = (struct drsuapi_DsGetNT4ChangeLogRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags));
                if (PyLong_Check(value)) {
@@ -11812,6 +14597,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogRequest1_get_preferred_maximum_leng
 static int py_drsuapi_DsGetNT4ChangeLogRequest1_set_preferred_maximum_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogRequest1 *object = (struct drsuapi_DsGetNT4ChangeLogRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->preferred_maximum_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->preferred_maximum_length));
                if (PyLong_Check(value)) {
@@ -11855,6 +14644,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogRequest1_get_restart_length(PyObjec
 static int py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogRequest1 *object = (struct drsuapi_DsGetNT4ChangeLogRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->restart_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->restart_length));
                if (PyLong_Check(value)) {
@@ -11915,10 +14708,18 @@ static int py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_data(PyObject *py_ob
 {
        struct drsuapi_DsGetNT4ChangeLogRequest1 *object = (struct drsuapi_DsGetNT4ChangeLogRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->restart_data));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->restart_data");
+               return -1;
+       }
        if (value == Py_None) {
                object->restart_data = NULL;
        } else {
                object->restart_data = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->restart_data");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int restart_data_cntr_1;
@@ -11926,6 +14727,10 @@ static int py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_data(PyObject *py_ob
                        if (!object->restart_data) { return -1;; }
                        talloc_set_name_const(object->restart_data, "ARRAY: object->restart_data");
                        for (restart_data_cntr_1 = 0; restart_data_cntr_1 < PyList_GET_SIZE(value); restart_data_cntr_1++) {
+                               if (PyList_GET_ITEM(value, restart_data_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->restart_data[restart_data_cntr_1]");
+                                       return -1;
+                               }
                                {
                                        const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->restart_data[restart_data_cntr_1]));
                                        if (PyLong_Check(PyList_GET_ITEM(value, restart_data_cntr_1))) {
@@ -11962,11 +14767,31 @@ static int py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_data(PyObject *py_ob
 }
 
 static PyGetSetDef py_drsuapi_DsGetNT4ChangeLogRequest1_getsetters[] = {
-       { discard_const_p(char, "flags"), py_drsuapi_DsGetNT4ChangeLogRequest1_get_flags, py_drsuapi_DsGetNT4ChangeLogRequest1_set_flags },
-       { discard_const_p(char, "preferred_maximum_length"), py_drsuapi_DsGetNT4ChangeLogRequest1_get_preferred_maximum_length, py_drsuapi_DsGetNT4ChangeLogRequest1_set_preferred_maximum_length },
-       { discard_const_p(char, "restart_length"), py_drsuapi_DsGetNT4ChangeLogRequest1_get_restart_length, py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_length },
-       { discard_const_p(char, "restart_data"), py_drsuapi_DsGetNT4ChangeLogRequest1_get_restart_data, py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_data },
-       { NULL }
+       {
+               .name = discard_const_p(char, "flags"),
+               .get = py_drsuapi_DsGetNT4ChangeLogRequest1_get_flags,
+               .set = py_drsuapi_DsGetNT4ChangeLogRequest1_set_flags,
+               .doc = discard_const_p(char, "PIDL-generated element flags")
+       },
+       {
+               .name = discard_const_p(char, "preferred_maximum_length"),
+               .get = py_drsuapi_DsGetNT4ChangeLogRequest1_get_preferred_maximum_length,
+               .set = py_drsuapi_DsGetNT4ChangeLogRequest1_set_preferred_maximum_length,
+               .doc = discard_const_p(char, "PIDL-generated element preferred_maximum_length")
+       },
+       {
+               .name = discard_const_p(char, "restart_length"),
+               .get = py_drsuapi_DsGetNT4ChangeLogRequest1_get_restart_length,
+               .set = py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_length,
+               .doc = discard_const_p(char, "PIDL-generated element restart_length")
+       },
+       {
+               .name = discard_const_p(char, "restart_data"),
+               .get = py_drsuapi_DsGetNT4ChangeLogRequest1_get_restart_data,
+               .set = py_drsuapi_DsGetNT4ChangeLogRequest1_set_restart_data,
+               .doc = discard_const_p(char, "PIDL-generated element restart_data")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNT4ChangeLogRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -11981,7 +14806,6 @@ static PyTypeObject drsuapi_DsGetNT4ChangeLogRequest1_Type = {
        .tp_getset = py_drsuapi_DsGetNT4ChangeLogRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNT4ChangeLogRequest1_new,
 };
 
@@ -12004,6 +14828,10 @@ union drsuapi_DsGetNT4ChangeLogRequest *py_export_drsuapi_DsGetNT4ChangeLogReque
        union drsuapi_DsGetNT4ChangeLogRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsGetNT4ChangeLogRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNT4ChangeLogRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -12033,6 +14861,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_restart_length(PyObject *
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_restart_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->restart_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->restart_length));
                if (PyLong_Check(value)) {
@@ -12076,6 +14908,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_log_length(PyObject *obj,
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_length(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->log_length");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->log_length));
                if (PyLong_Check(value)) {
@@ -12119,6 +14955,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_sam_serial_number(PyObjec
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_sam_serial_number(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sam_serial_number");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->sam_serial_number));
                if (PyLong_Check(value)) {
@@ -12162,6 +15002,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_sam_creation_time(PyObjec
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_sam_creation_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sam_creation_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->sam_creation_time));
                if (PyLong_Check(value)) {
@@ -12205,6 +15049,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_builtin_serial_number(PyO
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_builtin_serial_number(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->builtin_serial_number");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->builtin_serial_number));
                if (PyLong_Check(value)) {
@@ -12248,6 +15096,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_builtin_creation_time(PyO
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_builtin_creation_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->builtin_creation_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->builtin_creation_time));
                if (PyLong_Check(value)) {
@@ -12291,6 +15143,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_lsa_serial_number(PyObjec
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_lsa_serial_number(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->lsa_serial_number");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->lsa_serial_number));
                if (PyLong_Check(value)) {
@@ -12334,6 +15190,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_lsa_creation_time(PyObjec
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_lsa_creation_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->lsa_creation_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->lsa_creation_time));
                if (PyLong_Check(value)) {
@@ -12377,6 +15237,10 @@ static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_get_status(PyObject *obj, voi
 static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_status(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->status");
+               return -1;
+       }
        object->status = NT_STATUS(PyInt_AsLong(value));
        return 0;
 }
@@ -12409,10 +15273,18 @@ static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_restart_data(PyObject *py_obj,
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->restart_data));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->restart_data");
+               return -1;
+       }
        if (value == Py_None) {
                object->restart_data = NULL;
        } else {
                object->restart_data = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->restart_data");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int restart_data_cntr_1;
@@ -12420,6 +15292,10 @@ static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_restart_data(PyObject *py_obj,
                        if (!object->restart_data) { return -1;; }
                        talloc_set_name_const(object->restart_data, "ARRAY: object->restart_data");
                        for (restart_data_cntr_1 = 0; restart_data_cntr_1 < PyList_GET_SIZE(value); restart_data_cntr_1++) {
+                               if (PyList_GET_ITEM(value, restart_data_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->restart_data[restart_data_cntr_1]");
+                                       return -1;
+                               }
                                {
                                        const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->restart_data[restart_data_cntr_1]));
                                        if (PyLong_Check(PyList_GET_ITEM(value, restart_data_cntr_1))) {
@@ -12483,10 +15359,18 @@ static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_data(PyObject *py_obj, PyOb
 {
        struct drsuapi_DsGetNT4ChangeLogInfo1 *object = (struct drsuapi_DsGetNT4ChangeLogInfo1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->log_data));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->log_data");
+               return -1;
+       }
        if (value == Py_None) {
                object->log_data = NULL;
        } else {
                object->log_data = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->log_data");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int log_data_cntr_1;
@@ -12494,6 +15378,10 @@ static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_data(PyObject *py_obj, PyOb
                        if (!object->log_data) { return -1;; }
                        talloc_set_name_const(object->log_data, "ARRAY: object->log_data");
                        for (log_data_cntr_1 = 0; log_data_cntr_1 < PyList_GET_SIZE(value); log_data_cntr_1++) {
+                               if (PyList_GET_ITEM(value, log_data_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->log_data[log_data_cntr_1]");
+                                       return -1;
+                               }
                                {
                                        const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->log_data[log_data_cntr_1]));
                                        if (PyLong_Check(PyList_GET_ITEM(value, log_data_cntr_1))) {
@@ -12530,18 +15418,73 @@ static int py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_data(PyObject *py_obj, PyOb
 }
 
 static PyGetSetDef py_drsuapi_DsGetNT4ChangeLogInfo1_getsetters[] = {
-       { discard_const_p(char, "restart_length"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_restart_length, py_drsuapi_DsGetNT4ChangeLogInfo1_set_restart_length },
-       { discard_const_p(char, "log_length"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_log_length, py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_length },
-       { discard_const_p(char, "sam_serial_number"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_sam_serial_number, py_drsuapi_DsGetNT4ChangeLogInfo1_set_sam_serial_number },
-       { discard_const_p(char, "sam_creation_time"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_sam_creation_time, py_drsuapi_DsGetNT4ChangeLogInfo1_set_sam_creation_time },
-       { discard_const_p(char, "builtin_serial_number"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_builtin_serial_number, py_drsuapi_DsGetNT4ChangeLogInfo1_set_builtin_serial_number },
-       { discard_const_p(char, "builtin_creation_time"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_builtin_creation_time, py_drsuapi_DsGetNT4ChangeLogInfo1_set_builtin_creation_time },
-       { discard_const_p(char, "lsa_serial_number"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_lsa_serial_number, py_drsuapi_DsGetNT4ChangeLogInfo1_set_lsa_serial_number },
-       { discard_const_p(char, "lsa_creation_time"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_lsa_creation_time, py_drsuapi_DsGetNT4ChangeLogInfo1_set_lsa_creation_time },
-       { discard_const_p(char, "status"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_status, py_drsuapi_DsGetNT4ChangeLogInfo1_set_status },
-       { discard_const_p(char, "restart_data"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_restart_data, py_drsuapi_DsGetNT4ChangeLogInfo1_set_restart_data },
-       { discard_const_p(char, "log_data"), py_drsuapi_DsGetNT4ChangeLogInfo1_get_log_data, py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_data },
-       { NULL }
+       {
+               .name = discard_const_p(char, "restart_length"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_restart_length,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_restart_length,
+               .doc = discard_const_p(char, "PIDL-generated element restart_length")
+       },
+       {
+               .name = discard_const_p(char, "log_length"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_log_length,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_length,
+               .doc = discard_const_p(char, "PIDL-generated element log_length")
+       },
+       {
+               .name = discard_const_p(char, "sam_serial_number"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_sam_serial_number,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_sam_serial_number,
+               .doc = discard_const_p(char, "PIDL-generated element sam_serial_number")
+       },
+       {
+               .name = discard_const_p(char, "sam_creation_time"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_sam_creation_time,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_sam_creation_time,
+               .doc = discard_const_p(char, "PIDL-generated element sam_creation_time")
+       },
+       {
+               .name = discard_const_p(char, "builtin_serial_number"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_builtin_serial_number,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_builtin_serial_number,
+               .doc = discard_const_p(char, "PIDL-generated element builtin_serial_number")
+       },
+       {
+               .name = discard_const_p(char, "builtin_creation_time"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_builtin_creation_time,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_builtin_creation_time,
+               .doc = discard_const_p(char, "PIDL-generated element builtin_creation_time")
+       },
+       {
+               .name = discard_const_p(char, "lsa_serial_number"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_lsa_serial_number,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_lsa_serial_number,
+               .doc = discard_const_p(char, "PIDL-generated element lsa_serial_number")
+       },
+       {
+               .name = discard_const_p(char, "lsa_creation_time"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_lsa_creation_time,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_lsa_creation_time,
+               .doc = discard_const_p(char, "PIDL-generated element lsa_creation_time")
+       },
+       {
+               .name = discard_const_p(char, "status"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_status,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_status,
+               .doc = discard_const_p(char, "PIDL-generated element status")
+       },
+       {
+               .name = discard_const_p(char, "restart_data"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_restart_data,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_restart_data,
+               .doc = discard_const_p(char, "PIDL-generated element restart_data")
+       },
+       {
+               .name = discard_const_p(char, "log_data"),
+               .get = py_drsuapi_DsGetNT4ChangeLogInfo1_get_log_data,
+               .set = py_drsuapi_DsGetNT4ChangeLogInfo1_set_log_data,
+               .doc = discard_const_p(char, "PIDL-generated element log_data")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetNT4ChangeLogInfo1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -12556,7 +15499,6 @@ static PyTypeObject drsuapi_DsGetNT4ChangeLogInfo1_Type = {
        .tp_getset = py_drsuapi_DsGetNT4ChangeLogInfo1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetNT4ChangeLogInfo1_new,
 };
 
@@ -12579,6 +15521,10 @@ union drsuapi_DsGetNT4ChangeLogInfo *py_export_drsuapi_DsGetNT4ChangeLogInfo(TAL
        union drsuapi_DsGetNT4ChangeLogInfo *ret = talloc_zero(mem_ctx, union drsuapi_DsGetNT4ChangeLogInfo);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->info1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetNT4ChangeLogInfo1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -12618,25 +15564,57 @@ static PyObject *py_drsuapi_DsNameString_get_str(PyObject *obj, void *closure)
 static int py_drsuapi_DsNameString_set_str(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameString *object = (struct drsuapi_DsNameString *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->str");
+               return -1;
+       }
        if (value == Py_None) {
                object->str = NULL;
        } else {
                object->str = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->str = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->str = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->str");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->str = talloc_str;
+               }
        }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsNameString_getsetters[] = {
-       { discard_const_p(char, "str"), py_drsuapi_DsNameString_get_str, py_drsuapi_DsNameString_set_str },
-       { NULL }
+       {
+               .name = discard_const_p(char, "str"),
+               .get = py_drsuapi_DsNameString_get_str,
+               .set = py_drsuapi_DsNameString_set_str,
+               .doc = discard_const_p(char, "PIDL-generated element str")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsNameString_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -12651,7 +15629,6 @@ static PyTypeObject drsuapi_DsNameString_Type = {
        .tp_getset = py_drsuapi_DsNameString_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsNameString_new,
 };
 
@@ -12667,6 +15644,10 @@ static PyObject *py_drsuapi_DsNameRequest1_get_codepage(PyObject *obj, void *clo
 static int py_drsuapi_DsNameRequest1_set_codepage(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameRequest1 *object = (struct drsuapi_DsNameRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->codepage");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->codepage));
                if (PyLong_Check(value)) {
@@ -12710,6 +15691,10 @@ static PyObject *py_drsuapi_DsNameRequest1_get_language(PyObject *obj, void *clo
 static int py_drsuapi_DsNameRequest1_set_language(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameRequest1 *object = (struct drsuapi_DsNameRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->language");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->language));
                if (PyLong_Check(value)) {
@@ -12753,6 +15738,10 @@ static PyObject *py_drsuapi_DsNameRequest1_get_format_flags(PyObject *obj, void
 static int py_drsuapi_DsNameRequest1_set_format_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameRequest1 *object = (struct drsuapi_DsNameRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->format_flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->format_flags));
                if (PyLong_Check(value)) {
@@ -12796,6 +15785,10 @@ static PyObject *py_drsuapi_DsNameRequest1_get_format_offered(PyObject *obj, voi
 static int py_drsuapi_DsNameRequest1_set_format_offered(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameRequest1 *object = (struct drsuapi_DsNameRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->format_offered");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->format_offered));
                if (PyLong_Check(value)) {
@@ -12839,6 +15832,10 @@ static PyObject *py_drsuapi_DsNameRequest1_get_format_desired(PyObject *obj, voi
 static int py_drsuapi_DsNameRequest1_set_format_desired(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameRequest1 *object = (struct drsuapi_DsNameRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->format_desired");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->format_desired));
                if (PyLong_Check(value)) {
@@ -12882,6 +15879,10 @@ static PyObject *py_drsuapi_DsNameRequest1_get_count(PyObject *obj, void *closur
 static int py_drsuapi_DsNameRequest1_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameRequest1 *object = (struct drsuapi_DsNameRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -12942,10 +15943,18 @@ static int py_drsuapi_DsNameRequest1_set_names(PyObject *py_obj, PyObject *value
 {
        struct drsuapi_DsNameRequest1 *object = (struct drsuapi_DsNameRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->names));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->names");
+               return -1;
+       }
        if (value == Py_None) {
                object->names = NULL;
        } else {
                object->names = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->names");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int names_cntr_1;
@@ -12953,6 +15962,10 @@ static int py_drsuapi_DsNameRequest1_set_names(PyObject *py_obj, PyObject *value
                        if (!object->names) { return -1;; }
                        talloc_set_name_const(object->names, "ARRAY: object->names");
                        for (names_cntr_1 = 0; names_cntr_1 < PyList_GET_SIZE(value); names_cntr_1++) {
+                               if (PyList_GET_ITEM(value, names_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->names[names_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsNameString_Type, PyList_GET_ITEM(value, names_cntr_1), return -1;);
                                if (talloc_reference(object->names, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, names_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -12966,14 +15979,49 @@ static int py_drsuapi_DsNameRequest1_set_names(PyObject *py_obj, PyObject *value
 }
 
 static PyGetSetDef py_drsuapi_DsNameRequest1_getsetters[] = {
-       { discard_const_p(char, "codepage"), py_drsuapi_DsNameRequest1_get_codepage, py_drsuapi_DsNameRequest1_set_codepage },
-       { discard_const_p(char, "language"), py_drsuapi_DsNameRequest1_get_language, py_drsuapi_DsNameRequest1_set_language },
-       { discard_const_p(char, "format_flags"), py_drsuapi_DsNameRequest1_get_format_flags, py_drsuapi_DsNameRequest1_set_format_flags },
-       { discard_const_p(char, "format_offered"), py_drsuapi_DsNameRequest1_get_format_offered, py_drsuapi_DsNameRequest1_set_format_offered },
-       { discard_const_p(char, "format_desired"), py_drsuapi_DsNameRequest1_get_format_desired, py_drsuapi_DsNameRequest1_set_format_desired },
-       { discard_const_p(char, "count"), py_drsuapi_DsNameRequest1_get_count, py_drsuapi_DsNameRequest1_set_count },
-       { discard_const_p(char, "names"), py_drsuapi_DsNameRequest1_get_names, py_drsuapi_DsNameRequest1_set_names },
-       { NULL }
+       {
+               .name = discard_const_p(char, "codepage"),
+               .get = py_drsuapi_DsNameRequest1_get_codepage,
+               .set = py_drsuapi_DsNameRequest1_set_codepage,
+               .doc = discard_const_p(char, "PIDL-generated element codepage")
+       },
+       {
+               .name = discard_const_p(char, "language"),
+               .get = py_drsuapi_DsNameRequest1_get_language,
+               .set = py_drsuapi_DsNameRequest1_set_language,
+               .doc = discard_const_p(char, "PIDL-generated element language")
+       },
+       {
+               .name = discard_const_p(char, "format_flags"),
+               .get = py_drsuapi_DsNameRequest1_get_format_flags,
+               .set = py_drsuapi_DsNameRequest1_set_format_flags,
+               .doc = discard_const_p(char, "PIDL-generated element format_flags")
+       },
+       {
+               .name = discard_const_p(char, "format_offered"),
+               .get = py_drsuapi_DsNameRequest1_get_format_offered,
+               .set = py_drsuapi_DsNameRequest1_set_format_offered,
+               .doc = discard_const_p(char, "PIDL-generated element format_offered")
+       },
+       {
+               .name = discard_const_p(char, "format_desired"),
+               .get = py_drsuapi_DsNameRequest1_get_format_desired,
+               .set = py_drsuapi_DsNameRequest1_set_format_desired,
+               .doc = discard_const_p(char, "PIDL-generated element format_desired")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsNameRequest1_get_count,
+               .set = py_drsuapi_DsNameRequest1_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "names"),
+               .get = py_drsuapi_DsNameRequest1_get_names,
+               .set = py_drsuapi_DsNameRequest1_set_names,
+               .doc = discard_const_p(char, "PIDL-generated element names")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsNameRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -12988,7 +16036,6 @@ static PyTypeObject drsuapi_DsNameRequest1_Type = {
        .tp_getset = py_drsuapi_DsNameRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsNameRequest1_new,
 };
 
@@ -13011,6 +16058,10 @@ union drsuapi_DsNameRequest *py_export_drsuapi_DsNameRequest(TALLOC_CTX *mem_ctx
        union drsuapi_DsNameRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsNameRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsNameRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -13040,6 +16091,10 @@ static PyObject *py_drsuapi_DsNameInfo1_get_status(PyObject *obj, void *closure)
 static int py_drsuapi_DsNameInfo1_set_status(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameInfo1 *object = (struct drsuapi_DsNameInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->status");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->status));
                if (PyLong_Check(value)) {
@@ -13093,18 +16148,45 @@ static PyObject *py_drsuapi_DsNameInfo1_get_dns_domain_name(PyObject *obj, void
 static int py_drsuapi_DsNameInfo1_set_dns_domain_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameInfo1 *object = (struct drsuapi_DsNameInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dns_domain_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->dns_domain_name = NULL;
        } else {
                object->dns_domain_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->dns_domain_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->dns_domain_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->dns_domain_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->dns_domain_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -13130,27 +16212,69 @@ static PyObject *py_drsuapi_DsNameInfo1_get_result_name(PyObject *obj, void *clo
 static int py_drsuapi_DsNameInfo1_set_result_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameInfo1 *object = (struct drsuapi_DsNameInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->result_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->result_name = NULL;
        } else {
                object->result_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->result_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->result_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->result_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->result_name = talloc_str;
+               }
        }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsNameInfo1_getsetters[] = {
-       { discard_const_p(char, "status"), py_drsuapi_DsNameInfo1_get_status, py_drsuapi_DsNameInfo1_set_status },
-       { discard_const_p(char, "dns_domain_name"), py_drsuapi_DsNameInfo1_get_dns_domain_name, py_drsuapi_DsNameInfo1_set_dns_domain_name },
-       { discard_const_p(char, "result_name"), py_drsuapi_DsNameInfo1_get_result_name, py_drsuapi_DsNameInfo1_set_result_name },
-       { NULL }
+       {
+               .name = discard_const_p(char, "status"),
+               .get = py_drsuapi_DsNameInfo1_get_status,
+               .set = py_drsuapi_DsNameInfo1_set_status,
+               .doc = discard_const_p(char, "PIDL-generated element status")
+       },
+       {
+               .name = discard_const_p(char, "dns_domain_name"),
+               .get = py_drsuapi_DsNameInfo1_get_dns_domain_name,
+               .set = py_drsuapi_DsNameInfo1_set_dns_domain_name,
+               .doc = discard_const_p(char, "PIDL-generated element dns_domain_name")
+       },
+       {
+               .name = discard_const_p(char, "result_name"),
+               .get = py_drsuapi_DsNameInfo1_get_result_name,
+               .set = py_drsuapi_DsNameInfo1_set_result_name,
+               .doc = discard_const_p(char, "PIDL-generated element result_name")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsNameInfo1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -13165,7 +16289,6 @@ static PyTypeObject drsuapi_DsNameInfo1_Type = {
        .tp_getset = py_drsuapi_DsNameInfo1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsNameInfo1_new,
 };
 
@@ -13181,6 +16304,10 @@ static PyObject *py_drsuapi_DsNameCtr1_get_count(PyObject *obj, void *closure)
 static int py_drsuapi_DsNameCtr1_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsNameCtr1 *object = (struct drsuapi_DsNameCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -13241,10 +16368,18 @@ static int py_drsuapi_DsNameCtr1_set_array(PyObject *py_obj, PyObject *value, vo
 {
        struct drsuapi_DsNameCtr1 *object = (struct drsuapi_DsNameCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        if (value == Py_None) {
                object->array = NULL;
        } else {
                object->array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int array_cntr_1;
@@ -13252,6 +16387,10 @@ static int py_drsuapi_DsNameCtr1_set_array(PyObject *py_obj, PyObject *value, vo
                        if (!object->array) { return -1;; }
                        talloc_set_name_const(object->array, "ARRAY: object->array");
                        for (array_cntr_1 = 0; array_cntr_1 < PyList_GET_SIZE(value); array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsNameInfo1_Type, PyList_GET_ITEM(value, array_cntr_1), return -1;);
                                if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -13265,9 +16404,19 @@ static int py_drsuapi_DsNameCtr1_set_array(PyObject *py_obj, PyObject *value, vo
 }
 
 static PyGetSetDef py_drsuapi_DsNameCtr1_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsNameCtr1_get_count, py_drsuapi_DsNameCtr1_set_count },
-       { discard_const_p(char, "array"), py_drsuapi_DsNameCtr1_get_array, py_drsuapi_DsNameCtr1_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsNameCtr1_get_count,
+               .set = py_drsuapi_DsNameCtr1_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsNameCtr1_get_array,
+               .set = py_drsuapi_DsNameCtr1_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsNameCtr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -13282,7 +16431,6 @@ static PyTypeObject drsuapi_DsNameCtr1_Type = {
        .tp_getset = py_drsuapi_DsNameCtr1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsNameCtr1_new,
 };
 
@@ -13310,10 +16458,18 @@ union drsuapi_DsNameCtr *py_export_drsuapi_DsNameCtr(TALLOC_CTX *mem_ctx, int le
        union drsuapi_DsNameCtr *ret = talloc_zero(mem_ctx, union drsuapi_DsNameCtr);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr1");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->ctr1 = NULL;
                        } else {
                                ret->ctr1 = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->ctr1");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsNameCtr1_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -13344,6 +16500,10 @@ static PyObject *py_drsuapi_DsWriteAccountSpnRequest1_get_operation(PyObject *ob
 static int py_drsuapi_DsWriteAccountSpnRequest1_set_operation(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsWriteAccountSpnRequest1 *object = (struct drsuapi_DsWriteAccountSpnRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->operation");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->operation));
                if (PyLong_Check(value)) {
@@ -13387,6 +16547,10 @@ static PyObject *py_drsuapi_DsWriteAccountSpnRequest1_get_unknown1(PyObject *obj
 static int py_drsuapi_DsWriteAccountSpnRequest1_set_unknown1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsWriteAccountSpnRequest1 *object = (struct drsuapi_DsWriteAccountSpnRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->unknown1");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->unknown1));
                if (PyLong_Check(value)) {
@@ -13440,18 +16604,45 @@ static PyObject *py_drsuapi_DsWriteAccountSpnRequest1_get_object_dn(PyObject *ob
 static int py_drsuapi_DsWriteAccountSpnRequest1_set_object_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsWriteAccountSpnRequest1 *object = (struct drsuapi_DsWriteAccountSpnRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->object_dn = NULL;
        } else {
                object->object_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->object_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->object_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -13467,6 +16658,10 @@ static PyObject *py_drsuapi_DsWriteAccountSpnRequest1_get_count(PyObject *obj, v
 static int py_drsuapi_DsWriteAccountSpnRequest1_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsWriteAccountSpnRequest1 *object = (struct drsuapi_DsWriteAccountSpnRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -13527,10 +16722,18 @@ static int py_drsuapi_DsWriteAccountSpnRequest1_set_spn_names(PyObject *py_obj,
 {
        struct drsuapi_DsWriteAccountSpnRequest1 *object = (struct drsuapi_DsWriteAccountSpnRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->spn_names));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->spn_names");
+               return -1;
+       }
        if (value == Py_None) {
                object->spn_names = NULL;
        } else {
                object->spn_names = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->spn_names");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int spn_names_cntr_1;
@@ -13538,6 +16741,10 @@ static int py_drsuapi_DsWriteAccountSpnRequest1_set_spn_names(PyObject *py_obj,
                        if (!object->spn_names) { return -1;; }
                        talloc_set_name_const(object->spn_names, "ARRAY: object->spn_names");
                        for (spn_names_cntr_1 = 0; spn_names_cntr_1 < PyList_GET_SIZE(value); spn_names_cntr_1++) {
+                               if (PyList_GET_ITEM(value, spn_names_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->spn_names[spn_names_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsNameString_Type, PyList_GET_ITEM(value, spn_names_cntr_1), return -1;);
                                if (talloc_reference(object->spn_names, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, spn_names_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -13551,12 +16758,37 @@ static int py_drsuapi_DsWriteAccountSpnRequest1_set_spn_names(PyObject *py_obj,
 }
 
 static PyGetSetDef py_drsuapi_DsWriteAccountSpnRequest1_getsetters[] = {
-       { discard_const_p(char, "operation"), py_drsuapi_DsWriteAccountSpnRequest1_get_operation, py_drsuapi_DsWriteAccountSpnRequest1_set_operation },
-       { discard_const_p(char, "unknown1"), py_drsuapi_DsWriteAccountSpnRequest1_get_unknown1, py_drsuapi_DsWriteAccountSpnRequest1_set_unknown1 },
-       { discard_const_p(char, "object_dn"), py_drsuapi_DsWriteAccountSpnRequest1_get_object_dn, py_drsuapi_DsWriteAccountSpnRequest1_set_object_dn },
-       { discard_const_p(char, "count"), py_drsuapi_DsWriteAccountSpnRequest1_get_count, py_drsuapi_DsWriteAccountSpnRequest1_set_count },
-       { discard_const_p(char, "spn_names"), py_drsuapi_DsWriteAccountSpnRequest1_get_spn_names, py_drsuapi_DsWriteAccountSpnRequest1_set_spn_names },
-       { NULL }
+       {
+               .name = discard_const_p(char, "operation"),
+               .get = py_drsuapi_DsWriteAccountSpnRequest1_get_operation,
+               .set = py_drsuapi_DsWriteAccountSpnRequest1_set_operation,
+               .doc = discard_const_p(char, "PIDL-generated element operation")
+       },
+       {
+               .name = discard_const_p(char, "unknown1"),
+               .get = py_drsuapi_DsWriteAccountSpnRequest1_get_unknown1,
+               .set = py_drsuapi_DsWriteAccountSpnRequest1_set_unknown1,
+               .doc = discard_const_p(char, "PIDL-generated element unknown1")
+       },
+       {
+               .name = discard_const_p(char, "object_dn"),
+               .get = py_drsuapi_DsWriteAccountSpnRequest1_get_object_dn,
+               .set = py_drsuapi_DsWriteAccountSpnRequest1_set_object_dn,
+               .doc = discard_const_p(char, "PIDL-generated element object_dn")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsWriteAccountSpnRequest1_get_count,
+               .set = py_drsuapi_DsWriteAccountSpnRequest1_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "spn_names"),
+               .get = py_drsuapi_DsWriteAccountSpnRequest1_get_spn_names,
+               .set = py_drsuapi_DsWriteAccountSpnRequest1_set_spn_names,
+               .doc = discard_const_p(char, "PIDL-generated element spn_names")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsWriteAccountSpnRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -13571,7 +16803,6 @@ static PyTypeObject drsuapi_DsWriteAccountSpnRequest1_Type = {
        .tp_getset = py_drsuapi_DsWriteAccountSpnRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsWriteAccountSpnRequest1_new,
 };
 
@@ -13594,6 +16825,10 @@ union drsuapi_DsWriteAccountSpnRequest *py_export_drsuapi_DsWriteAccountSpnReque
        union drsuapi_DsWriteAccountSpnRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsWriteAccountSpnRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsWriteAccountSpnRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -13623,13 +16858,22 @@ static PyObject *py_drsuapi_DsWriteAccountSpnResult1_get_status(PyObject *obj, v
 static int py_drsuapi_DsWriteAccountSpnResult1_set_status(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsWriteAccountSpnResult1 *object = (struct drsuapi_DsWriteAccountSpnResult1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->status");
+               return -1;
+       }
        object->status = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsWriteAccountSpnResult1_getsetters[] = {
-       { discard_const_p(char, "status"), py_drsuapi_DsWriteAccountSpnResult1_get_status, py_drsuapi_DsWriteAccountSpnResult1_set_status },
-       { NULL }
+       {
+               .name = discard_const_p(char, "status"),
+               .get = py_drsuapi_DsWriteAccountSpnResult1_get_status,
+               .set = py_drsuapi_DsWriteAccountSpnResult1_set_status,
+               .doc = discard_const_p(char, "PIDL-generated element status")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsWriteAccountSpnResult1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -13644,7 +16888,6 @@ static PyTypeObject drsuapi_DsWriteAccountSpnResult1_Type = {
        .tp_getset = py_drsuapi_DsWriteAccountSpnResult1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsWriteAccountSpnResult1_new,
 };
 
@@ -13667,6 +16910,10 @@ union drsuapi_DsWriteAccountSpnResult *py_export_drsuapi_DsWriteAccountSpnResult
        union drsuapi_DsWriteAccountSpnResult *ret = talloc_zero(mem_ctx, union drsuapi_DsWriteAccountSpnResult);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->res1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsWriteAccountSpnResult1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -13706,18 +16953,45 @@ static PyObject *py_drsuapi_DsRemoveDSServerRequest1_get_server_dn(PyObject *obj
 static int py_drsuapi_DsRemoveDSServerRequest1_set_server_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsRemoveDSServerRequest1 *object = (struct drsuapi_DsRemoveDSServerRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->server_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->server_dn = NULL;
        } else {
                object->server_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->server_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->server_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -13743,18 +17017,45 @@ static PyObject *py_drsuapi_DsRemoveDSServerRequest1_get_domain_dn(PyObject *obj
 static int py_drsuapi_DsRemoveDSServerRequest1_set_domain_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsRemoveDSServerRequest1 *object = (struct drsuapi_DsRemoveDSServerRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->domain_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->domain_dn = NULL;
        } else {
                object->domain_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->domain_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->domain_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->domain_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->domain_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -13770,6 +17071,10 @@ static PyObject *py_drsuapi_DsRemoveDSServerRequest1_get_commit(PyObject *obj, v
 static int py_drsuapi_DsRemoveDSServerRequest1_set_commit(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsRemoveDSServerRequest1 *object = (struct drsuapi_DsRemoveDSServerRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->commit");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->commit));
                if (PyLong_Check(value)) {
@@ -13803,10 +17108,25 @@ static int py_drsuapi_DsRemoveDSServerRequest1_set_commit(PyObject *py_obj, PyOb
 }
 
 static PyGetSetDef py_drsuapi_DsRemoveDSServerRequest1_getsetters[] = {
-       { discard_const_p(char, "server_dn"), py_drsuapi_DsRemoveDSServerRequest1_get_server_dn, py_drsuapi_DsRemoveDSServerRequest1_set_server_dn },
-       { discard_const_p(char, "domain_dn"), py_drsuapi_DsRemoveDSServerRequest1_get_domain_dn, py_drsuapi_DsRemoveDSServerRequest1_set_domain_dn },
-       { discard_const_p(char, "commit"), py_drsuapi_DsRemoveDSServerRequest1_get_commit, py_drsuapi_DsRemoveDSServerRequest1_set_commit },
-       { NULL }
+       {
+               .name = discard_const_p(char, "server_dn"),
+               .get = py_drsuapi_DsRemoveDSServerRequest1_get_server_dn,
+               .set = py_drsuapi_DsRemoveDSServerRequest1_set_server_dn,
+               .doc = discard_const_p(char, "PIDL-generated element server_dn")
+       },
+       {
+               .name = discard_const_p(char, "domain_dn"),
+               .get = py_drsuapi_DsRemoveDSServerRequest1_get_domain_dn,
+               .set = py_drsuapi_DsRemoveDSServerRequest1_set_domain_dn,
+               .doc = discard_const_p(char, "PIDL-generated element domain_dn")
+       },
+       {
+               .name = discard_const_p(char, "commit"),
+               .get = py_drsuapi_DsRemoveDSServerRequest1_get_commit,
+               .set = py_drsuapi_DsRemoveDSServerRequest1_set_commit,
+               .doc = discard_const_p(char, "PIDL-generated element commit")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsRemoveDSServerRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -13821,7 +17141,6 @@ static PyTypeObject drsuapi_DsRemoveDSServerRequest1_Type = {
        .tp_getset = py_drsuapi_DsRemoveDSServerRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsRemoveDSServerRequest1_new,
 };
 
@@ -13844,6 +17163,10 @@ union drsuapi_DsRemoveDSServerRequest *py_export_drsuapi_DsRemoveDSServerRequest
        union drsuapi_DsRemoveDSServerRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsRemoveDSServerRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsRemoveDSServerRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -13873,6 +17196,10 @@ static PyObject *py_drsuapi_DsRemoveDSServerResult1_get_last_dc_in_domain(PyObje
 static int py_drsuapi_DsRemoveDSServerResult1_set_last_dc_in_domain(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsRemoveDSServerResult1 *object = (struct drsuapi_DsRemoveDSServerResult1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->last_dc_in_domain");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->last_dc_in_domain));
                if (PyLong_Check(value)) {
@@ -13906,8 +17233,13 @@ static int py_drsuapi_DsRemoveDSServerResult1_set_last_dc_in_domain(PyObject *py
 }
 
 static PyGetSetDef py_drsuapi_DsRemoveDSServerResult1_getsetters[] = {
-       { discard_const_p(char, "last_dc_in_domain"), py_drsuapi_DsRemoveDSServerResult1_get_last_dc_in_domain, py_drsuapi_DsRemoveDSServerResult1_set_last_dc_in_domain },
-       { NULL }
+       {
+               .name = discard_const_p(char, "last_dc_in_domain"),
+               .get = py_drsuapi_DsRemoveDSServerResult1_get_last_dc_in_domain,
+               .set = py_drsuapi_DsRemoveDSServerResult1_set_last_dc_in_domain,
+               .doc = discard_const_p(char, "PIDL-generated element last_dc_in_domain")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsRemoveDSServerResult1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -13922,7 +17254,6 @@ static PyTypeObject drsuapi_DsRemoveDSServerResult1_Type = {
        .tp_getset = py_drsuapi_DsRemoveDSServerResult1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsRemoveDSServerResult1_new,
 };
 
@@ -13945,6 +17276,10 @@ union drsuapi_DsRemoveDSServerResult *py_export_drsuapi_DsRemoveDSServerResult(T
        union drsuapi_DsRemoveDSServerResult *ret = talloc_zero(mem_ctx, union drsuapi_DsRemoveDSServerResult);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->res1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsRemoveDSServerResult1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -13984,18 +17319,45 @@ static PyObject *py_drsuapi_DsGetDCInfoRequest1_get_domain_name(PyObject *obj, v
 static int py_drsuapi_DsGetDCInfoRequest1_set_domain_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfoRequest1 *object = (struct drsuapi_DsGetDCInfoRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->domain_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->domain_name = NULL;
        } else {
                object->domain_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->domain_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->domain_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->domain_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->domain_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -14011,6 +17373,10 @@ static PyObject *py_drsuapi_DsGetDCInfoRequest1_get_level(PyObject *obj, void *c
 static int py_drsuapi_DsGetDCInfoRequest1_set_level(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfoRequest1 *object = (struct drsuapi_DsGetDCInfoRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->level");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->level));
                if (PyLong_Check(value)) {
@@ -14044,9 +17410,19 @@ static int py_drsuapi_DsGetDCInfoRequest1_set_level(PyObject *py_obj, PyObject *
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCInfoRequest1_getsetters[] = {
-       { discard_const_p(char, "domain_name"), py_drsuapi_DsGetDCInfoRequest1_get_domain_name, py_drsuapi_DsGetDCInfoRequest1_set_domain_name },
-       { discard_const_p(char, "level"), py_drsuapi_DsGetDCInfoRequest1_get_level, py_drsuapi_DsGetDCInfoRequest1_set_level },
-       { NULL }
+       {
+               .name = discard_const_p(char, "domain_name"),
+               .get = py_drsuapi_DsGetDCInfoRequest1_get_domain_name,
+               .set = py_drsuapi_DsGetDCInfoRequest1_set_domain_name,
+               .doc = discard_const_p(char, "PIDL-generated element domain_name")
+       },
+       {
+               .name = discard_const_p(char, "level"),
+               .get = py_drsuapi_DsGetDCInfoRequest1_get_level,
+               .set = py_drsuapi_DsGetDCInfoRequest1_set_level,
+               .doc = discard_const_p(char, "PIDL-generated element level")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCInfoRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -14061,7 +17437,6 @@ static PyTypeObject drsuapi_DsGetDCInfoRequest1_Type = {
        .tp_getset = py_drsuapi_DsGetDCInfoRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCInfoRequest1_new,
 };
 
@@ -14084,6 +17459,10 @@ union drsuapi_DsGetDCInfoRequest *py_export_drsuapi_DsGetDCInfoRequest(TALLOC_CT
        union drsuapi_DsGetDCInfoRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsGetDCInfoRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetDCInfoRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -14123,22 +17502,49 @@ static PyObject *py_drsuapi_DsGetDCInfo1_get_netbios_name(PyObject *obj, void *c
 static int py_drsuapi_DsGetDCInfo1_set_netbios_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->netbios_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->netbios_name = NULL;
        } else {
                object->netbios_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->netbios_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->netbios_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->netbios_name");
                        return -1;
                }
-       }
-       return 0;
-}
-
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->netbios_name = talloc_str;
+               }
+       }
+       return 0;
+}
+
 static PyObject *py_drsuapi_DsGetDCInfo1_get_dns_name(PyObject *obj, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(obj);
@@ -14160,18 +17566,45 @@ static PyObject *py_drsuapi_DsGetDCInfo1_get_dns_name(PyObject *obj, void *closu
 static int py_drsuapi_DsGetDCInfo1_set_dns_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dns_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->dns_name = NULL;
        } else {
                object->dns_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->dns_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->dns_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->dns_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->dns_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -14197,18 +17630,45 @@ static PyObject *py_drsuapi_DsGetDCInfo1_get_site_name(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo1_set_site_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->site_name = NULL;
        } else {
                object->site_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->site_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->site_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->site_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -14234,18 +17694,45 @@ static PyObject *py_drsuapi_DsGetDCInfo1_get_computer_dn(PyObject *obj, void *cl
 static int py_drsuapi_DsGetDCInfo1_set_computer_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->computer_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->computer_dn = NULL;
        } else {
                object->computer_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->computer_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->computer_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->computer_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->computer_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -14271,18 +17758,45 @@ static PyObject *py_drsuapi_DsGetDCInfo1_get_server_dn(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo1_set_server_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->server_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->server_dn = NULL;
        } else {
                object->server_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->server_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->server_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -14298,6 +17812,10 @@ static PyObject *py_drsuapi_DsGetDCInfo1_get_is_pdc(PyObject *obj, void *closure
 static int py_drsuapi_DsGetDCInfo1_set_is_pdc(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_pdc");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_pdc));
                if (PyLong_Check(value)) {
@@ -14341,6 +17859,10 @@ static PyObject *py_drsuapi_DsGetDCInfo1_get_is_enabled(PyObject *obj, void *clo
 static int py_drsuapi_DsGetDCInfo1_set_is_enabled(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo1 *object = (struct drsuapi_DsGetDCInfo1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_enabled");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_enabled));
                if (PyLong_Check(value)) {
@@ -14374,14 +17896,49 @@ static int py_drsuapi_DsGetDCInfo1_set_is_enabled(PyObject *py_obj, PyObject *va
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCInfo1_getsetters[] = {
-       { discard_const_p(char, "netbios_name"), py_drsuapi_DsGetDCInfo1_get_netbios_name, py_drsuapi_DsGetDCInfo1_set_netbios_name },
-       { discard_const_p(char, "dns_name"), py_drsuapi_DsGetDCInfo1_get_dns_name, py_drsuapi_DsGetDCInfo1_set_dns_name },
-       { discard_const_p(char, "site_name"), py_drsuapi_DsGetDCInfo1_get_site_name, py_drsuapi_DsGetDCInfo1_set_site_name },
-       { discard_const_p(char, "computer_dn"), py_drsuapi_DsGetDCInfo1_get_computer_dn, py_drsuapi_DsGetDCInfo1_set_computer_dn },
-       { discard_const_p(char, "server_dn"), py_drsuapi_DsGetDCInfo1_get_server_dn, py_drsuapi_DsGetDCInfo1_set_server_dn },
-       { discard_const_p(char, "is_pdc"), py_drsuapi_DsGetDCInfo1_get_is_pdc, py_drsuapi_DsGetDCInfo1_set_is_pdc },
-       { discard_const_p(char, "is_enabled"), py_drsuapi_DsGetDCInfo1_get_is_enabled, py_drsuapi_DsGetDCInfo1_set_is_enabled },
-       { NULL }
+       {
+               .name = discard_const_p(char, "netbios_name"),
+               .get = py_drsuapi_DsGetDCInfo1_get_netbios_name,
+               .set = py_drsuapi_DsGetDCInfo1_set_netbios_name,
+               .doc = discard_const_p(char, "PIDL-generated element netbios_name")
+       },
+       {
+               .name = discard_const_p(char, "dns_name"),
+               .get = py_drsuapi_DsGetDCInfo1_get_dns_name,
+               .set = py_drsuapi_DsGetDCInfo1_set_dns_name,
+               .doc = discard_const_p(char, "PIDL-generated element dns_name")
+       },
+       {
+               .name = discard_const_p(char, "site_name"),
+               .get = py_drsuapi_DsGetDCInfo1_get_site_name,
+               .set = py_drsuapi_DsGetDCInfo1_set_site_name,
+               .doc = discard_const_p(char, "PIDL-generated element site_name")
+       },
+       {
+               .name = discard_const_p(char, "computer_dn"),
+               .get = py_drsuapi_DsGetDCInfo1_get_computer_dn,
+               .set = py_drsuapi_DsGetDCInfo1_set_computer_dn,
+               .doc = discard_const_p(char, "PIDL-generated element computer_dn")
+       },
+       {
+               .name = discard_const_p(char, "server_dn"),
+               .get = py_drsuapi_DsGetDCInfo1_get_server_dn,
+               .set = py_drsuapi_DsGetDCInfo1_set_server_dn,
+               .doc = discard_const_p(char, "PIDL-generated element server_dn")
+       },
+       {
+               .name = discard_const_p(char, "is_pdc"),
+               .get = py_drsuapi_DsGetDCInfo1_get_is_pdc,
+               .set = py_drsuapi_DsGetDCInfo1_set_is_pdc,
+               .doc = discard_const_p(char, "PIDL-generated element is_pdc")
+       },
+       {
+               .name = discard_const_p(char, "is_enabled"),
+               .get = py_drsuapi_DsGetDCInfo1_get_is_enabled,
+               .set = py_drsuapi_DsGetDCInfo1_set_is_enabled,
+               .doc = discard_const_p(char, "PIDL-generated element is_enabled")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCInfo1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -14396,7 +17953,6 @@ static PyTypeObject drsuapi_DsGetDCInfo1_Type = {
        .tp_getset = py_drsuapi_DsGetDCInfo1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCInfo1_new,
 };
 
@@ -14412,6 +17968,10 @@ static PyObject *py_drsuapi_DsGetDCInfoCtr1_get_count(PyObject *obj, void *closu
 static int py_drsuapi_DsGetDCInfoCtr1_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfoCtr1 *object = (struct drsuapi_DsGetDCInfoCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -14472,10 +18032,18 @@ static int py_drsuapi_DsGetDCInfoCtr1_set_array(PyObject *py_obj, PyObject *valu
 {
        struct drsuapi_DsGetDCInfoCtr1 *object = (struct drsuapi_DsGetDCInfoCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        if (value == Py_None) {
                object->array = NULL;
        } else {
                object->array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int array_cntr_1;
@@ -14483,6 +18051,10 @@ static int py_drsuapi_DsGetDCInfoCtr1_set_array(PyObject *py_obj, PyObject *valu
                        if (!object->array) { return -1;; }
                        talloc_set_name_const(object->array, "ARRAY: object->array");
                        for (array_cntr_1 = 0; array_cntr_1 < PyList_GET_SIZE(value); array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsGetDCInfo1_Type, PyList_GET_ITEM(value, array_cntr_1), return -1;);
                                if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -14496,9 +18068,19 @@ static int py_drsuapi_DsGetDCInfoCtr1_set_array(PyObject *py_obj, PyObject *valu
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCInfoCtr1_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsGetDCInfoCtr1_get_count, py_drsuapi_DsGetDCInfoCtr1_set_count },
-       { discard_const_p(char, "array"), py_drsuapi_DsGetDCInfoCtr1_get_array, py_drsuapi_DsGetDCInfoCtr1_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsGetDCInfoCtr1_get_count,
+               .set = py_drsuapi_DsGetDCInfoCtr1_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsGetDCInfoCtr1_get_array,
+               .set = py_drsuapi_DsGetDCInfoCtr1_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCInfoCtr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -14513,7 +18095,6 @@ static PyTypeObject drsuapi_DsGetDCInfoCtr1_Type = {
        .tp_getset = py_drsuapi_DsGetDCInfoCtr1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCInfoCtr1_new,
 };
 
@@ -14539,18 +18120,45 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_netbios_name(PyObject *obj, void *c
 static int py_drsuapi_DsGetDCInfo2_set_netbios_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->netbios_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->netbios_name = NULL;
        } else {
                object->netbios_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->netbios_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->netbios_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->netbios_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->netbios_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -14576,18 +18184,45 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_dns_name(PyObject *obj, void *closu
 static int py_drsuapi_DsGetDCInfo2_set_dns_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dns_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->dns_name = NULL;
        } else {
                object->dns_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->dns_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->dns_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->dns_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->dns_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -14613,18 +18248,45 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_site_name(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo2_set_site_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->site_name = NULL;
        } else {
                object->site_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->site_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->site_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->site_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -14650,18 +18312,45 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_site_dn(PyObject *obj, void *closur
 static int py_drsuapi_DsGetDCInfo2_set_site_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->site_dn = NULL;
        } else {
                object->site_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->site_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->site_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->site_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -14687,18 +18376,45 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_computer_dn(PyObject *obj, void *cl
 static int py_drsuapi_DsGetDCInfo2_set_computer_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->computer_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->computer_dn = NULL;
        } else {
                object->computer_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->computer_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->computer_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->computer_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->computer_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -14724,18 +18440,45 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_server_dn(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo2_set_server_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->server_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->server_dn = NULL;
        } else {
                object->server_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->server_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->server_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -14761,18 +18504,45 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_ntds_dn(PyObject *obj, void *closur
 static int py_drsuapi_DsGetDCInfo2_set_ntds_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ntds_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->ntds_dn = NULL;
        } else {
                object->ntds_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->ntds_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->ntds_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ntds_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->ntds_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -14788,6 +18558,10 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_is_pdc(PyObject *obj, void *closure
 static int py_drsuapi_DsGetDCInfo2_set_is_pdc(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_pdc");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_pdc));
                if (PyLong_Check(value)) {
@@ -14831,6 +18605,10 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_is_enabled(PyObject *obj, void *clo
 static int py_drsuapi_DsGetDCInfo2_set_is_enabled(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_enabled");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_enabled));
                if (PyLong_Check(value)) {
@@ -14874,6 +18652,10 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_is_gc(PyObject *obj, void *closure)
 static int py_drsuapi_DsGetDCInfo2_set_is_gc(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_gc");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_gc));
                if (PyLong_Check(value)) {
@@ -14917,6 +18699,10 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_site_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo2_set_site_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -14937,6 +18723,10 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_computer_guid(PyObject *obj, void *
 static int py_drsuapi_DsGetDCInfo2_set_computer_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->computer_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -14957,6 +18747,10 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_server_guid(PyObject *obj, void *cl
 static int py_drsuapi_DsGetDCInfo2_set_server_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->server_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -14977,6 +18771,10 @@ static PyObject *py_drsuapi_DsGetDCInfo2_get_ntds_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo2_set_ntds_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo2 *object = (struct drsuapi_DsGetDCInfo2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ntds_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -14987,21 +18785,91 @@ static int py_drsuapi_DsGetDCInfo2_set_ntds_guid(PyObject *py_obj, PyObject *val
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCInfo2_getsetters[] = {
-       { discard_const_p(char, "netbios_name"), py_drsuapi_DsGetDCInfo2_get_netbios_name, py_drsuapi_DsGetDCInfo2_set_netbios_name },
-       { discard_const_p(char, "dns_name"), py_drsuapi_DsGetDCInfo2_get_dns_name, py_drsuapi_DsGetDCInfo2_set_dns_name },
-       { discard_const_p(char, "site_name"), py_drsuapi_DsGetDCInfo2_get_site_name, py_drsuapi_DsGetDCInfo2_set_site_name },
-       { discard_const_p(char, "site_dn"), py_drsuapi_DsGetDCInfo2_get_site_dn, py_drsuapi_DsGetDCInfo2_set_site_dn },
-       { discard_const_p(char, "computer_dn"), py_drsuapi_DsGetDCInfo2_get_computer_dn, py_drsuapi_DsGetDCInfo2_set_computer_dn },
-       { discard_const_p(char, "server_dn"), py_drsuapi_DsGetDCInfo2_get_server_dn, py_drsuapi_DsGetDCInfo2_set_server_dn },
-       { discard_const_p(char, "ntds_dn"), py_drsuapi_DsGetDCInfo2_get_ntds_dn, py_drsuapi_DsGetDCInfo2_set_ntds_dn },
-       { discard_const_p(char, "is_pdc"), py_drsuapi_DsGetDCInfo2_get_is_pdc, py_drsuapi_DsGetDCInfo2_set_is_pdc },
-       { discard_const_p(char, "is_enabled"), py_drsuapi_DsGetDCInfo2_get_is_enabled, py_drsuapi_DsGetDCInfo2_set_is_enabled },
-       { discard_const_p(char, "is_gc"), py_drsuapi_DsGetDCInfo2_get_is_gc, py_drsuapi_DsGetDCInfo2_set_is_gc },
-       { discard_const_p(char, "site_guid"), py_drsuapi_DsGetDCInfo2_get_site_guid, py_drsuapi_DsGetDCInfo2_set_site_guid },
-       { discard_const_p(char, "computer_guid"), py_drsuapi_DsGetDCInfo2_get_computer_guid, py_drsuapi_DsGetDCInfo2_set_computer_guid },
-       { discard_const_p(char, "server_guid"), py_drsuapi_DsGetDCInfo2_get_server_guid, py_drsuapi_DsGetDCInfo2_set_server_guid },
-       { discard_const_p(char, "ntds_guid"), py_drsuapi_DsGetDCInfo2_get_ntds_guid, py_drsuapi_DsGetDCInfo2_set_ntds_guid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "netbios_name"),
+               .get = py_drsuapi_DsGetDCInfo2_get_netbios_name,
+               .set = py_drsuapi_DsGetDCInfo2_set_netbios_name,
+               .doc = discard_const_p(char, "PIDL-generated element netbios_name")
+       },
+       {
+               .name = discard_const_p(char, "dns_name"),
+               .get = py_drsuapi_DsGetDCInfo2_get_dns_name,
+               .set = py_drsuapi_DsGetDCInfo2_set_dns_name,
+               .doc = discard_const_p(char, "PIDL-generated element dns_name")
+       },
+       {
+               .name = discard_const_p(char, "site_name"),
+               .get = py_drsuapi_DsGetDCInfo2_get_site_name,
+               .set = py_drsuapi_DsGetDCInfo2_set_site_name,
+               .doc = discard_const_p(char, "PIDL-generated element site_name")
+       },
+       {
+               .name = discard_const_p(char, "site_dn"),
+               .get = py_drsuapi_DsGetDCInfo2_get_site_dn,
+               .set = py_drsuapi_DsGetDCInfo2_set_site_dn,
+               .doc = discard_const_p(char, "PIDL-generated element site_dn")
+       },
+       {
+               .name = discard_const_p(char, "computer_dn"),
+               .get = py_drsuapi_DsGetDCInfo2_get_computer_dn,
+               .set = py_drsuapi_DsGetDCInfo2_set_computer_dn,
+               .doc = discard_const_p(char, "PIDL-generated element computer_dn")
+       },
+       {
+               .name = discard_const_p(char, "server_dn"),
+               .get = py_drsuapi_DsGetDCInfo2_get_server_dn,
+               .set = py_drsuapi_DsGetDCInfo2_set_server_dn,
+               .doc = discard_const_p(char, "PIDL-generated element server_dn")
+       },
+       {
+               .name = discard_const_p(char, "ntds_dn"),
+               .get = py_drsuapi_DsGetDCInfo2_get_ntds_dn,
+               .set = py_drsuapi_DsGetDCInfo2_set_ntds_dn,
+               .doc = discard_const_p(char, "PIDL-generated element ntds_dn")
+       },
+       {
+               .name = discard_const_p(char, "is_pdc"),
+               .get = py_drsuapi_DsGetDCInfo2_get_is_pdc,
+               .set = py_drsuapi_DsGetDCInfo2_set_is_pdc,
+               .doc = discard_const_p(char, "PIDL-generated element is_pdc")
+       },
+       {
+               .name = discard_const_p(char, "is_enabled"),
+               .get = py_drsuapi_DsGetDCInfo2_get_is_enabled,
+               .set = py_drsuapi_DsGetDCInfo2_set_is_enabled,
+               .doc = discard_const_p(char, "PIDL-generated element is_enabled")
+       },
+       {
+               .name = discard_const_p(char, "is_gc"),
+               .get = py_drsuapi_DsGetDCInfo2_get_is_gc,
+               .set = py_drsuapi_DsGetDCInfo2_set_is_gc,
+               .doc = discard_const_p(char, "PIDL-generated element is_gc")
+       },
+       {
+               .name = discard_const_p(char, "site_guid"),
+               .get = py_drsuapi_DsGetDCInfo2_get_site_guid,
+               .set = py_drsuapi_DsGetDCInfo2_set_site_guid,
+               .doc = discard_const_p(char, "PIDL-generated element site_guid")
+       },
+       {
+               .name = discard_const_p(char, "computer_guid"),
+               .get = py_drsuapi_DsGetDCInfo2_get_computer_guid,
+               .set = py_drsuapi_DsGetDCInfo2_set_computer_guid,
+               .doc = discard_const_p(char, "PIDL-generated element computer_guid")
+       },
+       {
+               .name = discard_const_p(char, "server_guid"),
+               .get = py_drsuapi_DsGetDCInfo2_get_server_guid,
+               .set = py_drsuapi_DsGetDCInfo2_set_server_guid,
+               .doc = discard_const_p(char, "PIDL-generated element server_guid")
+       },
+       {
+               .name = discard_const_p(char, "ntds_guid"),
+               .get = py_drsuapi_DsGetDCInfo2_get_ntds_guid,
+               .set = py_drsuapi_DsGetDCInfo2_set_ntds_guid,
+               .doc = discard_const_p(char, "PIDL-generated element ntds_guid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCInfo2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -15016,7 +18884,6 @@ static PyTypeObject drsuapi_DsGetDCInfo2_Type = {
        .tp_getset = py_drsuapi_DsGetDCInfo2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCInfo2_new,
 };
 
@@ -15032,6 +18899,10 @@ static PyObject *py_drsuapi_DsGetDCInfoCtr2_get_count(PyObject *obj, void *closu
 static int py_drsuapi_DsGetDCInfoCtr2_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfoCtr2 *object = (struct drsuapi_DsGetDCInfoCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -15092,10 +18963,18 @@ static int py_drsuapi_DsGetDCInfoCtr2_set_array(PyObject *py_obj, PyObject *valu
 {
        struct drsuapi_DsGetDCInfoCtr2 *object = (struct drsuapi_DsGetDCInfoCtr2 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        if (value == Py_None) {
                object->array = NULL;
        } else {
                object->array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int array_cntr_1;
@@ -15103,6 +18982,10 @@ static int py_drsuapi_DsGetDCInfoCtr2_set_array(PyObject *py_obj, PyObject *valu
                        if (!object->array) { return -1;; }
                        talloc_set_name_const(object->array, "ARRAY: object->array");
                        for (array_cntr_1 = 0; array_cntr_1 < PyList_GET_SIZE(value); array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsGetDCInfo2_Type, PyList_GET_ITEM(value, array_cntr_1), return -1;);
                                if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -15116,9 +18999,19 @@ static int py_drsuapi_DsGetDCInfoCtr2_set_array(PyObject *py_obj, PyObject *valu
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCInfoCtr2_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsGetDCInfoCtr2_get_count, py_drsuapi_DsGetDCInfoCtr2_set_count },
-       { discard_const_p(char, "array"), py_drsuapi_DsGetDCInfoCtr2_get_array, py_drsuapi_DsGetDCInfoCtr2_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsGetDCInfoCtr2_get_count,
+               .set = py_drsuapi_DsGetDCInfoCtr2_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsGetDCInfoCtr2_get_array,
+               .set = py_drsuapi_DsGetDCInfoCtr2_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCInfoCtr2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -15133,7 +19026,6 @@ static PyTypeObject drsuapi_DsGetDCInfoCtr2_Type = {
        .tp_getset = py_drsuapi_DsGetDCInfoCtr2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCInfoCtr2_new,
 };
 
@@ -15159,18 +19051,45 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_netbios_name(PyObject *obj, void *c
 static int py_drsuapi_DsGetDCInfo3_set_netbios_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->netbios_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->netbios_name = NULL;
        } else {
                object->netbios_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->netbios_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->netbios_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->netbios_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->netbios_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -15196,18 +19115,45 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_dns_name(PyObject *obj, void *closu
 static int py_drsuapi_DsGetDCInfo3_set_dns_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dns_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->dns_name = NULL;
        } else {
                object->dns_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->dns_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->dns_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->dns_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->dns_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -15233,18 +19179,45 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_site_name(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo3_set_site_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->site_name = NULL;
        } else {
                object->site_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->site_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->site_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->site_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -15270,18 +19243,45 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_site_dn(PyObject *obj, void *closur
 static int py_drsuapi_DsGetDCInfo3_set_site_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->site_dn = NULL;
        } else {
                object->site_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->site_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->site_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->site_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -15307,18 +19307,45 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_computer_dn(PyObject *obj, void *cl
 static int py_drsuapi_DsGetDCInfo3_set_computer_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->computer_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->computer_dn = NULL;
        } else {
                object->computer_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->computer_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->computer_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->computer_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->computer_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -15344,18 +19371,45 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_server_dn(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo3_set_server_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->server_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->server_dn = NULL;
        } else {
                object->server_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->server_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->server_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->server_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -15381,18 +19435,45 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_ntds_dn(PyObject *obj, void *closur
 static int py_drsuapi_DsGetDCInfo3_set_ntds_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ntds_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->ntds_dn = NULL;
        } else {
                object->ntds_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->ntds_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->ntds_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ntds_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->ntds_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -15408,6 +19489,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_is_pdc(PyObject *obj, void *closure
 static int py_drsuapi_DsGetDCInfo3_set_is_pdc(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_pdc");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_pdc));
                if (PyLong_Check(value)) {
@@ -15451,6 +19536,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_is_enabled(PyObject *obj, void *clo
 static int py_drsuapi_DsGetDCInfo3_set_is_enabled(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_enabled");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_enabled));
                if (PyLong_Check(value)) {
@@ -15494,6 +19583,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_is_gc(PyObject *obj, void *closure)
 static int py_drsuapi_DsGetDCInfo3_set_is_gc(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_gc");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_gc));
                if (PyLong_Check(value)) {
@@ -15537,6 +19630,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_is_rodc(PyObject *obj, void *closur
 static int py_drsuapi_DsGetDCInfo3_set_is_rodc(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_rodc");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_rodc));
                if (PyLong_Check(value)) {
@@ -15580,6 +19677,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_site_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo3_set_site_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -15600,6 +19701,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_computer_guid(PyObject *obj, void *
 static int py_drsuapi_DsGetDCInfo3_set_computer_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->computer_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -15620,6 +19725,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_server_guid(PyObject *obj, void *cl
 static int py_drsuapi_DsGetDCInfo3_set_server_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->server_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -15640,6 +19749,10 @@ static PyObject *py_drsuapi_DsGetDCInfo3_get_ntds_guid(PyObject *obj, void *clos
 static int py_drsuapi_DsGetDCInfo3_set_ntds_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfo3 *object = (struct drsuapi_DsGetDCInfo3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ntds_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -15650,22 +19763,97 @@ static int py_drsuapi_DsGetDCInfo3_set_ntds_guid(PyObject *py_obj, PyObject *val
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCInfo3_getsetters[] = {
-       { discard_const_p(char, "netbios_name"), py_drsuapi_DsGetDCInfo3_get_netbios_name, py_drsuapi_DsGetDCInfo3_set_netbios_name },
-       { discard_const_p(char, "dns_name"), py_drsuapi_DsGetDCInfo3_get_dns_name, py_drsuapi_DsGetDCInfo3_set_dns_name },
-       { discard_const_p(char, "site_name"), py_drsuapi_DsGetDCInfo3_get_site_name, py_drsuapi_DsGetDCInfo3_set_site_name },
-       { discard_const_p(char, "site_dn"), py_drsuapi_DsGetDCInfo3_get_site_dn, py_drsuapi_DsGetDCInfo3_set_site_dn },
-       { discard_const_p(char, "computer_dn"), py_drsuapi_DsGetDCInfo3_get_computer_dn, py_drsuapi_DsGetDCInfo3_set_computer_dn },
-       { discard_const_p(char, "server_dn"), py_drsuapi_DsGetDCInfo3_get_server_dn, py_drsuapi_DsGetDCInfo3_set_server_dn },
-       { discard_const_p(char, "ntds_dn"), py_drsuapi_DsGetDCInfo3_get_ntds_dn, py_drsuapi_DsGetDCInfo3_set_ntds_dn },
-       { discard_const_p(char, "is_pdc"), py_drsuapi_DsGetDCInfo3_get_is_pdc, py_drsuapi_DsGetDCInfo3_set_is_pdc },
-       { discard_const_p(char, "is_enabled"), py_drsuapi_DsGetDCInfo3_get_is_enabled, py_drsuapi_DsGetDCInfo3_set_is_enabled },
-       { discard_const_p(char, "is_gc"), py_drsuapi_DsGetDCInfo3_get_is_gc, py_drsuapi_DsGetDCInfo3_set_is_gc },
-       { discard_const_p(char, "is_rodc"), py_drsuapi_DsGetDCInfo3_get_is_rodc, py_drsuapi_DsGetDCInfo3_set_is_rodc },
-       { discard_const_p(char, "site_guid"), py_drsuapi_DsGetDCInfo3_get_site_guid, py_drsuapi_DsGetDCInfo3_set_site_guid },
-       { discard_const_p(char, "computer_guid"), py_drsuapi_DsGetDCInfo3_get_computer_guid, py_drsuapi_DsGetDCInfo3_set_computer_guid },
-       { discard_const_p(char, "server_guid"), py_drsuapi_DsGetDCInfo3_get_server_guid, py_drsuapi_DsGetDCInfo3_set_server_guid },
-       { discard_const_p(char, "ntds_guid"), py_drsuapi_DsGetDCInfo3_get_ntds_guid, py_drsuapi_DsGetDCInfo3_set_ntds_guid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "netbios_name"),
+               .get = py_drsuapi_DsGetDCInfo3_get_netbios_name,
+               .set = py_drsuapi_DsGetDCInfo3_set_netbios_name,
+               .doc = discard_const_p(char, "PIDL-generated element netbios_name")
+       },
+       {
+               .name = discard_const_p(char, "dns_name"),
+               .get = py_drsuapi_DsGetDCInfo3_get_dns_name,
+               .set = py_drsuapi_DsGetDCInfo3_set_dns_name,
+               .doc = discard_const_p(char, "PIDL-generated element dns_name")
+       },
+       {
+               .name = discard_const_p(char, "site_name"),
+               .get = py_drsuapi_DsGetDCInfo3_get_site_name,
+               .set = py_drsuapi_DsGetDCInfo3_set_site_name,
+               .doc = discard_const_p(char, "PIDL-generated element site_name")
+       },
+       {
+               .name = discard_const_p(char, "site_dn"),
+               .get = py_drsuapi_DsGetDCInfo3_get_site_dn,
+               .set = py_drsuapi_DsGetDCInfo3_set_site_dn,
+               .doc = discard_const_p(char, "PIDL-generated element site_dn")
+       },
+       {
+               .name = discard_const_p(char, "computer_dn"),
+               .get = py_drsuapi_DsGetDCInfo3_get_computer_dn,
+               .set = py_drsuapi_DsGetDCInfo3_set_computer_dn,
+               .doc = discard_const_p(char, "PIDL-generated element computer_dn")
+       },
+       {
+               .name = discard_const_p(char, "server_dn"),
+               .get = py_drsuapi_DsGetDCInfo3_get_server_dn,
+               .set = py_drsuapi_DsGetDCInfo3_set_server_dn,
+               .doc = discard_const_p(char, "PIDL-generated element server_dn")
+       },
+       {
+               .name = discard_const_p(char, "ntds_dn"),
+               .get = py_drsuapi_DsGetDCInfo3_get_ntds_dn,
+               .set = py_drsuapi_DsGetDCInfo3_set_ntds_dn,
+               .doc = discard_const_p(char, "PIDL-generated element ntds_dn")
+       },
+       {
+               .name = discard_const_p(char, "is_pdc"),
+               .get = py_drsuapi_DsGetDCInfo3_get_is_pdc,
+               .set = py_drsuapi_DsGetDCInfo3_set_is_pdc,
+               .doc = discard_const_p(char, "PIDL-generated element is_pdc")
+       },
+       {
+               .name = discard_const_p(char, "is_enabled"),
+               .get = py_drsuapi_DsGetDCInfo3_get_is_enabled,
+               .set = py_drsuapi_DsGetDCInfo3_set_is_enabled,
+               .doc = discard_const_p(char, "PIDL-generated element is_enabled")
+       },
+       {
+               .name = discard_const_p(char, "is_gc"),
+               .get = py_drsuapi_DsGetDCInfo3_get_is_gc,
+               .set = py_drsuapi_DsGetDCInfo3_set_is_gc,
+               .doc = discard_const_p(char, "PIDL-generated element is_gc")
+       },
+       {
+               .name = discard_const_p(char, "is_rodc"),
+               .get = py_drsuapi_DsGetDCInfo3_get_is_rodc,
+               .set = py_drsuapi_DsGetDCInfo3_set_is_rodc,
+               .doc = discard_const_p(char, "PIDL-generated element is_rodc")
+       },
+       {
+               .name = discard_const_p(char, "site_guid"),
+               .get = py_drsuapi_DsGetDCInfo3_get_site_guid,
+               .set = py_drsuapi_DsGetDCInfo3_set_site_guid,
+               .doc = discard_const_p(char, "PIDL-generated element site_guid")
+       },
+       {
+               .name = discard_const_p(char, "computer_guid"),
+               .get = py_drsuapi_DsGetDCInfo3_get_computer_guid,
+               .set = py_drsuapi_DsGetDCInfo3_set_computer_guid,
+               .doc = discard_const_p(char, "PIDL-generated element computer_guid")
+       },
+       {
+               .name = discard_const_p(char, "server_guid"),
+               .get = py_drsuapi_DsGetDCInfo3_get_server_guid,
+               .set = py_drsuapi_DsGetDCInfo3_set_server_guid,
+               .doc = discard_const_p(char, "PIDL-generated element server_guid")
+       },
+       {
+               .name = discard_const_p(char, "ntds_guid"),
+               .get = py_drsuapi_DsGetDCInfo3_get_ntds_guid,
+               .set = py_drsuapi_DsGetDCInfo3_set_ntds_guid,
+               .doc = discard_const_p(char, "PIDL-generated element ntds_guid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCInfo3_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -15680,7 +19868,6 @@ static PyTypeObject drsuapi_DsGetDCInfo3_Type = {
        .tp_getset = py_drsuapi_DsGetDCInfo3_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCInfo3_new,
 };
 
@@ -15696,6 +19883,10 @@ static PyObject *py_drsuapi_DsGetDCInfoCtr3_get_count(PyObject *obj, void *closu
 static int py_drsuapi_DsGetDCInfoCtr3_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCInfoCtr3 *object = (struct drsuapi_DsGetDCInfoCtr3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -15756,10 +19947,18 @@ static int py_drsuapi_DsGetDCInfoCtr3_set_array(PyObject *py_obj, PyObject *valu
 {
        struct drsuapi_DsGetDCInfoCtr3 *object = (struct drsuapi_DsGetDCInfoCtr3 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        if (value == Py_None) {
                object->array = NULL;
        } else {
                object->array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int array_cntr_1;
@@ -15767,6 +19966,10 @@ static int py_drsuapi_DsGetDCInfoCtr3_set_array(PyObject *py_obj, PyObject *valu
                        if (!object->array) { return -1;; }
                        talloc_set_name_const(object->array, "ARRAY: object->array");
                        for (array_cntr_1 = 0; array_cntr_1 < PyList_GET_SIZE(value); array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsGetDCInfo3_Type, PyList_GET_ITEM(value, array_cntr_1), return -1;);
                                if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -15780,9 +19983,19 @@ static int py_drsuapi_DsGetDCInfoCtr3_set_array(PyObject *py_obj, PyObject *valu
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCInfoCtr3_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsGetDCInfoCtr3_get_count, py_drsuapi_DsGetDCInfoCtr3_set_count },
-       { discard_const_p(char, "array"), py_drsuapi_DsGetDCInfoCtr3_get_array, py_drsuapi_DsGetDCInfoCtr3_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsGetDCInfoCtr3_get_count,
+               .set = py_drsuapi_DsGetDCInfoCtr3_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsGetDCInfoCtr3_get_array,
+               .set = py_drsuapi_DsGetDCInfoCtr3_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCInfoCtr3_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -15797,7 +20010,6 @@ static PyTypeObject drsuapi_DsGetDCInfoCtr3_Type = {
        .tp_getset = py_drsuapi_DsGetDCInfoCtr3_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCInfoCtr3_new,
 };
 
@@ -15813,7 +20025,37 @@ static PyObject *py_drsuapi_DsGetDCConnection01_get_client_ip_address(PyObject *
 static int py_drsuapi_DsGetDCConnection01_set_client_ip_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnection01 *object = (struct drsuapi_DsGetDCConnection01 *)pytalloc_get_ptr(py_obj);
-       object->client_ip_address = PyString_AS_STRING(value);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->client_ip_address");
+               return -1;
+       }
+       {
+               const char *test_str;
+               const char *talloc_str;
+               PyObject *unicode = NULL;
+               if (PyUnicode_Check(value)) {
+                       unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                       if (unicode == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       test_str = PyString_AS_STRING(unicode);
+               } else if (PyString_Check(value)) {
+                       test_str = PyString_AS_STRING(value);
+               } else {
+                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                       return -1;
+               }
+               talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+               if (unicode != NULL) {
+                       Py_DECREF(unicode);
+               }
+               if (talloc_str == NULL) {
+                       PyErr_NoMemory();
+                       return -1;
+               }
+               object->client_ip_address = talloc_str;
+       }
        return 0;
 }
 
@@ -15828,6 +20070,10 @@ static PyObject *py_drsuapi_DsGetDCConnection01_get_unknown2(PyObject *obj, void
 static int py_drsuapi_DsGetDCConnection01_set_unknown2(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnection01 *object = (struct drsuapi_DsGetDCConnection01 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->unknown2");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->unknown2));
                if (PyLong_Check(value)) {
@@ -15871,6 +20117,10 @@ static PyObject *py_drsuapi_DsGetDCConnection01_get_connection_time(PyObject *ob
 static int py_drsuapi_DsGetDCConnection01_set_connection_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnection01 *object = (struct drsuapi_DsGetDCConnection01 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->connection_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->connection_time));
                if (PyLong_Check(value)) {
@@ -15914,6 +20164,10 @@ static PyObject *py_drsuapi_DsGetDCConnection01_get_unknown4(PyObject *obj, void
 static int py_drsuapi_DsGetDCConnection01_set_unknown4(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnection01 *object = (struct drsuapi_DsGetDCConnection01 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->unknown4");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->unknown4));
                if (PyLong_Check(value)) {
@@ -15957,6 +20211,10 @@ static PyObject *py_drsuapi_DsGetDCConnection01_get_unknown5(PyObject *obj, void
 static int py_drsuapi_DsGetDCConnection01_set_unknown5(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnection01 *object = (struct drsuapi_DsGetDCConnection01 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->unknown5");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->unknown5));
                if (PyLong_Check(value)) {
@@ -16000,6 +20258,10 @@ static PyObject *py_drsuapi_DsGetDCConnection01_get_unknown6(PyObject *obj, void
 static int py_drsuapi_DsGetDCConnection01_set_unknown6(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnection01 *object = (struct drsuapi_DsGetDCConnection01 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->unknown6");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->unknown6));
                if (PyLong_Check(value)) {
@@ -16053,31 +20315,93 @@ static PyObject *py_drsuapi_DsGetDCConnection01_get_client_account(PyObject *obj
 static int py_drsuapi_DsGetDCConnection01_set_client_account(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnection01 *object = (struct drsuapi_DsGetDCConnection01 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->client_account");
+               return -1;
+       }
        if (value == Py_None) {
                object->client_account = NULL;
        } else {
                object->client_account = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->client_account = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->client_account = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->client_account");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->client_account = talloc_str;
+               }
        }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCConnection01_getsetters[] = {
-       { discard_const_p(char, "client_ip_address"), py_drsuapi_DsGetDCConnection01_get_client_ip_address, py_drsuapi_DsGetDCConnection01_set_client_ip_address },
-       { discard_const_p(char, "unknown2"), py_drsuapi_DsGetDCConnection01_get_unknown2, py_drsuapi_DsGetDCConnection01_set_unknown2 },
-       { discard_const_p(char, "connection_time"), py_drsuapi_DsGetDCConnection01_get_connection_time, py_drsuapi_DsGetDCConnection01_set_connection_time },
-       { discard_const_p(char, "unknown4"), py_drsuapi_DsGetDCConnection01_get_unknown4, py_drsuapi_DsGetDCConnection01_set_unknown4 },
-       { discard_const_p(char, "unknown5"), py_drsuapi_DsGetDCConnection01_get_unknown5, py_drsuapi_DsGetDCConnection01_set_unknown5 },
-       { discard_const_p(char, "unknown6"), py_drsuapi_DsGetDCConnection01_get_unknown6, py_drsuapi_DsGetDCConnection01_set_unknown6 },
-       { discard_const_p(char, "client_account"), py_drsuapi_DsGetDCConnection01_get_client_account, py_drsuapi_DsGetDCConnection01_set_client_account },
-       { NULL }
+       {
+               .name = discard_const_p(char, "client_ip_address"),
+               .get = py_drsuapi_DsGetDCConnection01_get_client_ip_address,
+               .set = py_drsuapi_DsGetDCConnection01_set_client_ip_address,
+               .doc = discard_const_p(char, "PIDL-generated element client_ip_address")
+       },
+       {
+               .name = discard_const_p(char, "unknown2"),
+               .get = py_drsuapi_DsGetDCConnection01_get_unknown2,
+               .set = py_drsuapi_DsGetDCConnection01_set_unknown2,
+               .doc = discard_const_p(char, "PIDL-generated element unknown2")
+       },
+       {
+               .name = discard_const_p(char, "connection_time"),
+               .get = py_drsuapi_DsGetDCConnection01_get_connection_time,
+               .set = py_drsuapi_DsGetDCConnection01_set_connection_time,
+               .doc = discard_const_p(char, "PIDL-generated element connection_time")
+       },
+       {
+               .name = discard_const_p(char, "unknown4"),
+               .get = py_drsuapi_DsGetDCConnection01_get_unknown4,
+               .set = py_drsuapi_DsGetDCConnection01_set_unknown4,
+               .doc = discard_const_p(char, "PIDL-generated element unknown4")
+       },
+       {
+               .name = discard_const_p(char, "unknown5"),
+               .get = py_drsuapi_DsGetDCConnection01_get_unknown5,
+               .set = py_drsuapi_DsGetDCConnection01_set_unknown5,
+               .doc = discard_const_p(char, "PIDL-generated element unknown5")
+       },
+       {
+               .name = discard_const_p(char, "unknown6"),
+               .get = py_drsuapi_DsGetDCConnection01_get_unknown6,
+               .set = py_drsuapi_DsGetDCConnection01_set_unknown6,
+               .doc = discard_const_p(char, "PIDL-generated element unknown6")
+       },
+       {
+               .name = discard_const_p(char, "client_account"),
+               .get = py_drsuapi_DsGetDCConnection01_get_client_account,
+               .set = py_drsuapi_DsGetDCConnection01_set_client_account,
+               .doc = discard_const_p(char, "PIDL-generated element client_account")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCConnection01_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -16092,7 +20416,6 @@ static PyTypeObject drsuapi_DsGetDCConnection01_Type = {
        .tp_getset = py_drsuapi_DsGetDCConnection01_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCConnection01_new,
 };
 
@@ -16108,6 +20431,10 @@ static PyObject *py_drsuapi_DsGetDCConnectionCtr01_get_count(PyObject *obj, void
 static int py_drsuapi_DsGetDCConnectionCtr01_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetDCConnectionCtr01 *object = (struct drsuapi_DsGetDCConnectionCtr01 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -16168,10 +20495,18 @@ static int py_drsuapi_DsGetDCConnectionCtr01_set_array(PyObject *py_obj, PyObjec
 {
        struct drsuapi_DsGetDCConnectionCtr01 *object = (struct drsuapi_DsGetDCConnectionCtr01 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        if (value == Py_None) {
                object->array = NULL;
        } else {
                object->array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int array_cntr_1;
@@ -16179,6 +20514,10 @@ static int py_drsuapi_DsGetDCConnectionCtr01_set_array(PyObject *py_obj, PyObjec
                        if (!object->array) { return -1;; }
                        talloc_set_name_const(object->array, "ARRAY: object->array");
                        for (array_cntr_1 = 0; array_cntr_1 < PyList_GET_SIZE(value); array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsGetDCConnection01_Type, PyList_GET_ITEM(value, array_cntr_1), return -1;);
                                if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -16192,9 +20531,19 @@ static int py_drsuapi_DsGetDCConnectionCtr01_set_array(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsGetDCConnectionCtr01_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsGetDCConnectionCtr01_get_count, py_drsuapi_DsGetDCConnectionCtr01_set_count },
-       { discard_const_p(char, "array"), py_drsuapi_DsGetDCConnectionCtr01_get_array, py_drsuapi_DsGetDCConnectionCtr01_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsGetDCConnectionCtr01_get_count,
+               .set = py_drsuapi_DsGetDCConnectionCtr01_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsGetDCConnectionCtr01_get_array,
+               .set = py_drsuapi_DsGetDCConnectionCtr01_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetDCConnectionCtr01_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -16209,7 +20558,6 @@ static PyTypeObject drsuapi_DsGetDCConnectionCtr01_Type = {
        .tp_getset = py_drsuapi_DsGetDCConnectionCtr01_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetDCConnectionCtr01_new,
 };
 
@@ -16244,6 +20592,10 @@ union drsuapi_DsGetDCInfoCtr *py_export_drsuapi_DsGetDCInfoCtr(TALLOC_CTX *mem_c
        union drsuapi_DsGetDCInfoCtr *ret = talloc_zero(mem_ctx, union drsuapi_DsGetDCInfoCtr);
        switch (level) {
                case DRSUAPI_DC_INFO_CTR_1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetDCInfoCtr1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -16253,6 +20605,10 @@ union drsuapi_DsGetDCInfoCtr *py_export_drsuapi_DsGetDCInfoCtr(TALLOC_CTX *mem_c
                        break;
 
                case DRSUAPI_DC_INFO_CTR_2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr2");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetDCInfoCtr2_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -16262,6 +20618,10 @@ union drsuapi_DsGetDCInfoCtr *py_export_drsuapi_DsGetDCInfoCtr(TALLOC_CTX *mem_c
                        break;
 
                case DRSUAPI_DC_INFO_CTR_3:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr3");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetDCInfoCtr3_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -16271,6 +20631,10 @@ union drsuapi_DsGetDCInfoCtr *py_export_drsuapi_DsGetDCInfoCtr(TALLOC_CTX *mem_c
                        break;
 
                case DRSUAPI_DC_CONNECTION_CTR_01:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr01");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetDCConnectionCtr01_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -16306,10 +20670,18 @@ static int py_drsuapi_DsReplicaObjectListItem_set_next_object(PyObject *py_obj,
 {
        struct drsuapi_DsReplicaObjectListItem *object = (struct drsuapi_DsReplicaObjectListItem *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->next_object));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->next_object");
+               return -1;
+       }
        if (value == Py_None) {
                object->next_object = NULL;
        } else {
                object->next_object = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->next_object");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectListItem_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -16331,6 +20703,10 @@ static PyObject *py_drsuapi_DsReplicaObjectListItem_get_object(PyObject *obj, vo
 static int py_drsuapi_DsReplicaObjectListItem_set_object(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectListItem *object = (struct drsuapi_DsReplicaObjectListItem *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObject_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -16341,9 +20717,19 @@ static int py_drsuapi_DsReplicaObjectListItem_set_object(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjectListItem_getsetters[] = {
-       { discard_const_p(char, "next_object"), py_drsuapi_DsReplicaObjectListItem_get_next_object, py_drsuapi_DsReplicaObjectListItem_set_next_object },
-       { discard_const_p(char, "object"), py_drsuapi_DsReplicaObjectListItem_get_object, py_drsuapi_DsReplicaObjectListItem_set_object },
-       { NULL }
+       {
+               .name = discard_const_p(char, "next_object"),
+               .get = py_drsuapi_DsReplicaObjectListItem_get_next_object,
+               .set = py_drsuapi_DsReplicaObjectListItem_set_next_object,
+               .doc = discard_const_p(char, "PIDL-generated element next_object")
+       },
+       {
+               .name = discard_const_p(char, "object"),
+               .get = py_drsuapi_DsReplicaObjectListItem_get_object,
+               .set = py_drsuapi_DsReplicaObjectListItem_set_object,
+               .doc = discard_const_p(char, "PIDL-generated element object")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjectListItem_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -16354,22 +20740,31 @@ static PyObject *py_drsuapi_DsReplicaObjectListItem_new(PyTypeObject *type, PyOb
 static PyObject *py_drsuapi_DsReplicaObjectListItem_ndr_pack(PyObject *py_obj)
 {
        struct drsuapi_DsReplicaObjectListItem *object = (struct drsuapi_DsReplicaObjectListItem *)pytalloc_get_ptr(py_obj);
+       PyObject *ret = NULL;
        DATA_BLOB blob;
        enum ndr_err_code err;
-       err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectListItem);
+       TALLOC_CTX *tmp_ctx = talloc_new(pytalloc_get_mem_ctx(py_obj));
+       if (tmp_ctx == NULL) {
+               PyErr_SetNdrError(NDR_ERR_ALLOC);
+               return NULL;
+       }
+       err = ndr_push_struct_blob(&blob, tmp_ctx, object, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectListItem);
        if (err != NDR_ERR_SUCCESS) {
+               TALLOC_FREE(tmp_ctx);
                PyErr_SetNdrError(err);
                return NULL;
        }
 
-       return PyString_FromStringAndSize((char *)blob.data, blob.length);
+       ret = PyString_FromStringAndSize((char *)blob.data, blob.length);
+       TALLOC_FREE(tmp_ctx);
+       return ret;
 }
 
 static PyObject *py_drsuapi_DsReplicaObjectListItem_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
 {
        struct drsuapi_DsReplicaObjectListItem *object = (struct drsuapi_DsReplicaObjectListItem *)pytalloc_get_ptr(py_obj);
        DATA_BLOB blob;
-       int blob_length = 0;
+       Py_ssize_t blob_length = 0;
        enum ndr_err_code err;
        const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
        PyObject *allow_remaining_obj = NULL;
@@ -16427,7 +20822,6 @@ static PyTypeObject drsuapi_DsReplicaObjectListItem_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjectListItem_getsetters,
        .tp_methods = py_drsuapi_DsReplicaObjectListItem_methods,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjectListItem_new,
 };
 
@@ -16443,6 +20837,10 @@ static PyObject *py_drsuapi_DsAddEntryRequest2_get_first_object(PyObject *obj, v
 static int py_drsuapi_DsAddEntryRequest2_set_first_object(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryRequest2 *object = (struct drsuapi_DsAddEntryRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->first_object");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectListItem_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -16453,8 +20851,13 @@ static int py_drsuapi_DsAddEntryRequest2_set_first_object(PyObject *py_obj, PyOb
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryRequest2_getsetters[] = {
-       { discard_const_p(char, "first_object"), py_drsuapi_DsAddEntryRequest2_get_first_object, py_drsuapi_DsAddEntryRequest2_set_first_object },
-       { NULL }
+       {
+               .name = discard_const_p(char, "first_object"),
+               .get = py_drsuapi_DsAddEntryRequest2_get_first_object,
+               .set = py_drsuapi_DsAddEntryRequest2_set_first_object,
+               .doc = discard_const_p(char, "PIDL-generated element first_object")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryRequest2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -16469,7 +20872,6 @@ static PyTypeObject drsuapi_DsAddEntryRequest2_Type = {
        .tp_getset = py_drsuapi_DsAddEntryRequest2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryRequest2_new,
 };
 
@@ -16485,6 +20887,10 @@ static PyObject *py_drsuapi_SecBuffer_get_buf_size(PyObject *obj, void *closure)
 static int py_drsuapi_SecBuffer_set_buf_size(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_SecBuffer *object = (struct drsuapi_SecBuffer *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->buf_size");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->buf_size));
                if (PyLong_Check(value)) {
@@ -16528,6 +20934,10 @@ static PyObject *py_drsuapi_SecBuffer_get_buf_type(PyObject *obj, void *closure)
 static int py_drsuapi_SecBuffer_set_buf_type(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_SecBuffer *object = (struct drsuapi_SecBuffer *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->buf_type");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->buf_type));
                if (PyLong_Check(value)) {
@@ -16588,10 +20998,18 @@ static int py_drsuapi_SecBuffer_set_buffer(PyObject *py_obj, PyObject *value, vo
 {
        struct drsuapi_SecBuffer *object = (struct drsuapi_SecBuffer *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->buffer));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->buffer");
+               return -1;
+       }
        if (value == Py_None) {
                object->buffer = NULL;
        } else {
                object->buffer = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->buffer");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int buffer_cntr_1;
@@ -16599,6 +21017,10 @@ static int py_drsuapi_SecBuffer_set_buffer(PyObject *py_obj, PyObject *value, vo
                        if (!object->buffer) { return -1;; }
                        talloc_set_name_const(object->buffer, "ARRAY: object->buffer");
                        for (buffer_cntr_1 = 0; buffer_cntr_1 < PyList_GET_SIZE(value); buffer_cntr_1++) {
+                               if (PyList_GET_ITEM(value, buffer_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->buffer[buffer_cntr_1]");
+                                       return -1;
+                               }
                                {
                                        const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->buffer[buffer_cntr_1]));
                                        if (PyLong_Check(PyList_GET_ITEM(value, buffer_cntr_1))) {
@@ -16635,10 +21057,25 @@ static int py_drsuapi_SecBuffer_set_buffer(PyObject *py_obj, PyObject *value, vo
 }
 
 static PyGetSetDef py_drsuapi_SecBuffer_getsetters[] = {
-       { discard_const_p(char, "buf_size"), py_drsuapi_SecBuffer_get_buf_size, py_drsuapi_SecBuffer_set_buf_size },
-       { discard_const_p(char, "buf_type"), py_drsuapi_SecBuffer_get_buf_type, py_drsuapi_SecBuffer_set_buf_type },
-       { discard_const_p(char, "buffer"), py_drsuapi_SecBuffer_get_buffer, py_drsuapi_SecBuffer_set_buffer },
-       { NULL }
+       {
+               .name = discard_const_p(char, "buf_size"),
+               .get = py_drsuapi_SecBuffer_get_buf_size,
+               .set = py_drsuapi_SecBuffer_set_buf_size,
+               .doc = discard_const_p(char, "PIDL-generated element buf_size")
+       },
+       {
+               .name = discard_const_p(char, "buf_type"),
+               .get = py_drsuapi_SecBuffer_get_buf_type,
+               .set = py_drsuapi_SecBuffer_set_buf_type,
+               .doc = discard_const_p(char, "PIDL-generated element buf_type")
+       },
+       {
+               .name = discard_const_p(char, "buffer"),
+               .get = py_drsuapi_SecBuffer_get_buffer,
+               .set = py_drsuapi_SecBuffer_set_buffer,
+               .doc = discard_const_p(char, "PIDL-generated element buffer")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_SecBuffer_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -16653,7 +21090,6 @@ static PyTypeObject drsuapi_SecBuffer_Type = {
        .tp_getset = py_drsuapi_SecBuffer_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_SecBuffer_new,
 };
 
@@ -16669,6 +21105,10 @@ static PyObject *py_drsuapi_SecBufferDesc_get_version(PyObject *obj, void *closu
 static int py_drsuapi_SecBufferDesc_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_SecBufferDesc *object = (struct drsuapi_SecBufferDesc *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -16712,6 +21152,10 @@ static PyObject *py_drsuapi_SecBufferDesc_get_buff_count(PyObject *obj, void *cl
 static int py_drsuapi_SecBufferDesc_set_buff_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_SecBufferDesc *object = (struct drsuapi_SecBufferDesc *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->buff_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->buff_count));
                if (PyLong_Check(value)) {
@@ -16772,10 +21216,18 @@ static int py_drsuapi_SecBufferDesc_set_buffers(PyObject *py_obj, PyObject *valu
 {
        struct drsuapi_SecBufferDesc *object = (struct drsuapi_SecBufferDesc *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->buffers));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->buffers");
+               return -1;
+       }
        if (value == Py_None) {
                object->buffers = NULL;
        } else {
                object->buffers = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->buffers");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int buffers_cntr_1;
@@ -16783,6 +21235,10 @@ static int py_drsuapi_SecBufferDesc_set_buffers(PyObject *py_obj, PyObject *valu
                        if (!object->buffers) { return -1;; }
                        talloc_set_name_const(object->buffers, "ARRAY: object->buffers");
                        for (buffers_cntr_1 = 0; buffers_cntr_1 < PyList_GET_SIZE(value); buffers_cntr_1++) {
+                               if (PyList_GET_ITEM(value, buffers_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->buffers[buffers_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_SecBuffer_Type, PyList_GET_ITEM(value, buffers_cntr_1), return -1;);
                                if (talloc_reference(object->buffers, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, buffers_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -16796,10 +21252,25 @@ static int py_drsuapi_SecBufferDesc_set_buffers(PyObject *py_obj, PyObject *valu
 }
 
 static PyGetSetDef py_drsuapi_SecBufferDesc_getsetters[] = {
-       { discard_const_p(char, "version"), py_drsuapi_SecBufferDesc_get_version, py_drsuapi_SecBufferDesc_set_version },
-       { discard_const_p(char, "buff_count"), py_drsuapi_SecBufferDesc_get_buff_count, py_drsuapi_SecBufferDesc_set_buff_count },
-       { discard_const_p(char, "buffers"), py_drsuapi_SecBufferDesc_get_buffers, py_drsuapi_SecBufferDesc_set_buffers },
-       { NULL }
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_SecBufferDesc_get_version,
+               .set = py_drsuapi_SecBufferDesc_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "buff_count"),
+               .get = py_drsuapi_SecBufferDesc_get_buff_count,
+               .set = py_drsuapi_SecBufferDesc_set_buff_count,
+               .doc = discard_const_p(char, "PIDL-generated element buff_count")
+       },
+       {
+               .name = discard_const_p(char, "buffers"),
+               .get = py_drsuapi_SecBufferDesc_get_buffers,
+               .set = py_drsuapi_SecBufferDesc_set_buffers,
+               .doc = discard_const_p(char, "PIDL-generated element buffers")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_SecBufferDesc_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -16814,7 +21285,6 @@ static PyTypeObject drsuapi_SecBufferDesc_Type = {
        .tp_getset = py_drsuapi_SecBufferDesc_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_SecBufferDesc_new,
 };
 
@@ -16830,6 +21300,10 @@ static PyObject *py_drsuapi_DsAddEntryRequest3_get_first_object(PyObject *obj, v
 static int py_drsuapi_DsAddEntryRequest3_set_first_object(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryRequest3 *object = (struct drsuapi_DsAddEntryRequest3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->first_object");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsReplicaObjectListItem_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -16856,10 +21330,18 @@ static int py_drsuapi_DsAddEntryRequest3_set_client_creds(PyObject *py_obj, PyOb
 {
        struct drsuapi_DsAddEntryRequest3 *object = (struct drsuapi_DsAddEntryRequest3 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->client_creds));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->client_creds");
+               return -1;
+       }
        if (value == Py_None) {
                object->client_creds = NULL;
        } else {
                object->client_creds = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->client_creds");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_SecBufferDesc_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -16871,9 +21353,19 @@ static int py_drsuapi_DsAddEntryRequest3_set_client_creds(PyObject *py_obj, PyOb
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryRequest3_getsetters[] = {
-       { discard_const_p(char, "first_object"), py_drsuapi_DsAddEntryRequest3_get_first_object, py_drsuapi_DsAddEntryRequest3_set_first_object },
-       { discard_const_p(char, "client_creds"), py_drsuapi_DsAddEntryRequest3_get_client_creds, py_drsuapi_DsAddEntryRequest3_set_client_creds },
-       { NULL }
+       {
+               .name = discard_const_p(char, "first_object"),
+               .get = py_drsuapi_DsAddEntryRequest3_get_first_object,
+               .set = py_drsuapi_DsAddEntryRequest3_set_first_object,
+               .doc = discard_const_p(char, "PIDL-generated element first_object")
+       },
+       {
+               .name = discard_const_p(char, "client_creds"),
+               .get = py_drsuapi_DsAddEntryRequest3_get_client_creds,
+               .set = py_drsuapi_DsAddEntryRequest3_set_client_creds,
+               .doc = discard_const_p(char, "PIDL-generated element client_creds")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryRequest3_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -16888,7 +21380,6 @@ static PyTypeObject drsuapi_DsAddEntryRequest3_Type = {
        .tp_getset = py_drsuapi_DsAddEntryRequest3_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryRequest3_new,
 };
 
@@ -16915,6 +21406,10 @@ union drsuapi_DsAddEntryRequest *py_export_drsuapi_DsAddEntryRequest(TALLOC_CTX
        union drsuapi_DsAddEntryRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsAddEntryRequest);
        switch (level) {
                case 2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req2");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryRequest2_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -16924,6 +21419,10 @@ union drsuapi_DsAddEntryRequest *py_export_drsuapi_DsAddEntryRequest(TALLOC_CTX
                        break;
 
                case 3:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req3");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryRequest3_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -16953,6 +21452,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfoX_get_dsid(PyObject *obj, void *c
 static int py_drsuapi_DsAddEntryErrorInfoX_set_dsid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfoX *object = (struct drsuapi_DsAddEntryErrorInfoX *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dsid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dsid));
                if (PyLong_Check(value)) {
@@ -16996,6 +21499,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfoX_get_extended_err(PyObject *obj,
 static int py_drsuapi_DsAddEntryErrorInfoX_set_extended_err(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfoX *object = (struct drsuapi_DsAddEntryErrorInfoX *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_err");
+               return -1;
+       }
        object->extended_err = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -17011,6 +21518,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfoX_get_extended_data(PyObject *obj
 static int py_drsuapi_DsAddEntryErrorInfoX_set_extended_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfoX *object = (struct drsuapi_DsAddEntryErrorInfoX *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_data");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_data));
                if (PyLong_Check(value)) {
@@ -17054,6 +21565,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfoX_get_problem(PyObject *obj, void
 static int py_drsuapi_DsAddEntryErrorInfoX_set_problem(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfoX *object = (struct drsuapi_DsAddEntryErrorInfoX *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->problem");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->problem));
                if (PyLong_Check(value)) {
@@ -17087,11 +21602,31 @@ static int py_drsuapi_DsAddEntryErrorInfoX_set_problem(PyObject *py_obj, PyObjec
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryErrorInfoX_getsetters[] = {
-       { discard_const_p(char, "dsid"), py_drsuapi_DsAddEntryErrorInfoX_get_dsid, py_drsuapi_DsAddEntryErrorInfoX_set_dsid },
-       { discard_const_p(char, "extended_err"), py_drsuapi_DsAddEntryErrorInfoX_get_extended_err, py_drsuapi_DsAddEntryErrorInfoX_set_extended_err },
-       { discard_const_p(char, "extended_data"), py_drsuapi_DsAddEntryErrorInfoX_get_extended_data, py_drsuapi_DsAddEntryErrorInfoX_set_extended_data },
-       { discard_const_p(char, "problem"), py_drsuapi_DsAddEntryErrorInfoX_get_problem, py_drsuapi_DsAddEntryErrorInfoX_set_problem },
-       { NULL }
+       {
+               .name = discard_const_p(char, "dsid"),
+               .get = py_drsuapi_DsAddEntryErrorInfoX_get_dsid,
+               .set = py_drsuapi_DsAddEntryErrorInfoX_set_dsid,
+               .doc = discard_const_p(char, "PIDL-generated element dsid")
+       },
+       {
+               .name = discard_const_p(char, "extended_err"),
+               .get = py_drsuapi_DsAddEntryErrorInfoX_get_extended_err,
+               .set = py_drsuapi_DsAddEntryErrorInfoX_set_extended_err,
+               .doc = discard_const_p(char, "PIDL-generated element extended_err")
+       },
+       {
+               .name = discard_const_p(char, "extended_data"),
+               .get = py_drsuapi_DsAddEntryErrorInfoX_get_extended_data,
+               .set = py_drsuapi_DsAddEntryErrorInfoX_set_extended_data,
+               .doc = discard_const_p(char, "PIDL-generated element extended_data")
+       },
+       {
+               .name = discard_const_p(char, "problem"),
+               .get = py_drsuapi_DsAddEntryErrorInfoX_get_problem,
+               .set = py_drsuapi_DsAddEntryErrorInfoX_set_problem,
+               .doc = discard_const_p(char, "PIDL-generated element problem")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryErrorInfoX_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -17106,7 +21641,6 @@ static PyTypeObject drsuapi_DsAddEntryErrorInfoX_Type = {
        .tp_getset = py_drsuapi_DsAddEntryErrorInfoX_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryErrorInfoX_new,
 };
 
@@ -17122,6 +21656,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_get_dsid(PyObject *obj, void *
 static int py_drsuapi_DsAddEntry_AttrErr_V1_set_dsid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErr_V1 *object = (struct drsuapi_DsAddEntry_AttrErr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dsid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dsid));
                if (PyLong_Check(value)) {
@@ -17165,6 +21703,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_get_extended_err(PyObject *obj
 static int py_drsuapi_DsAddEntry_AttrErr_V1_set_extended_err(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErr_V1 *object = (struct drsuapi_DsAddEntry_AttrErr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_err");
+               return -1;
+       }
        object->extended_err = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -17180,6 +21722,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_get_extended_data(PyObject *ob
 static int py_drsuapi_DsAddEntry_AttrErr_V1_set_extended_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErr_V1 *object = (struct drsuapi_DsAddEntry_AttrErr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_data");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_data));
                if (PyLong_Check(value)) {
@@ -17223,6 +21769,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_get_problem(PyObject *obj, voi
 static int py_drsuapi_DsAddEntry_AttrErr_V1_set_problem(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErr_V1 *object = (struct drsuapi_DsAddEntry_AttrErr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->problem");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->problem));
                if (PyLong_Check(value)) {
@@ -17266,6 +21816,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_get_attid(PyObject *obj, void
 static int py_drsuapi_DsAddEntry_AttrErr_V1_set_attid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErr_V1 *object = (struct drsuapi_DsAddEntry_AttrErr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->attid));
                if (PyLong_Check(value)) {
@@ -17309,6 +21863,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_get_is_val_returned(PyObject *
 static int py_drsuapi_DsAddEntry_AttrErr_V1_set_is_val_returned(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErr_V1 *object = (struct drsuapi_DsAddEntry_AttrErr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_val_returned");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_val_returned));
                if (PyLong_Check(value)) {
@@ -17352,6 +21910,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_get_attr_val(PyObject *obj, vo
 static int py_drsuapi_DsAddEntry_AttrErr_V1_set_attr_val(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErr_V1 *object = (struct drsuapi_DsAddEntry_AttrErr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attr_val");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsAttributeValue_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -17362,14 +21924,49 @@ static int py_drsuapi_DsAddEntry_AttrErr_V1_set_attr_val(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntry_AttrErr_V1_getsetters[] = {
-       { discard_const_p(char, "dsid"), py_drsuapi_DsAddEntry_AttrErr_V1_get_dsid, py_drsuapi_DsAddEntry_AttrErr_V1_set_dsid },
-       { discard_const_p(char, "extended_err"), py_drsuapi_DsAddEntry_AttrErr_V1_get_extended_err, py_drsuapi_DsAddEntry_AttrErr_V1_set_extended_err },
-       { discard_const_p(char, "extended_data"), py_drsuapi_DsAddEntry_AttrErr_V1_get_extended_data, py_drsuapi_DsAddEntry_AttrErr_V1_set_extended_data },
-       { discard_const_p(char, "problem"), py_drsuapi_DsAddEntry_AttrErr_V1_get_problem, py_drsuapi_DsAddEntry_AttrErr_V1_set_problem },
-       { discard_const_p(char, "attid"), py_drsuapi_DsAddEntry_AttrErr_V1_get_attid, py_drsuapi_DsAddEntry_AttrErr_V1_set_attid },
-       { discard_const_p(char, "is_val_returned"), py_drsuapi_DsAddEntry_AttrErr_V1_get_is_val_returned, py_drsuapi_DsAddEntry_AttrErr_V1_set_is_val_returned },
-       { discard_const_p(char, "attr_val"), py_drsuapi_DsAddEntry_AttrErr_V1_get_attr_val, py_drsuapi_DsAddEntry_AttrErr_V1_set_attr_val },
-       { NULL }
+       {
+               .name = discard_const_p(char, "dsid"),
+               .get = py_drsuapi_DsAddEntry_AttrErr_V1_get_dsid,
+               .set = py_drsuapi_DsAddEntry_AttrErr_V1_set_dsid,
+               .doc = discard_const_p(char, "PIDL-generated element dsid")
+       },
+       {
+               .name = discard_const_p(char, "extended_err"),
+               .get = py_drsuapi_DsAddEntry_AttrErr_V1_get_extended_err,
+               .set = py_drsuapi_DsAddEntry_AttrErr_V1_set_extended_err,
+               .doc = discard_const_p(char, "PIDL-generated element extended_err")
+       },
+       {
+               .name = discard_const_p(char, "extended_data"),
+               .get = py_drsuapi_DsAddEntry_AttrErr_V1_get_extended_data,
+               .set = py_drsuapi_DsAddEntry_AttrErr_V1_set_extended_data,
+               .doc = discard_const_p(char, "PIDL-generated element extended_data")
+       },
+       {
+               .name = discard_const_p(char, "problem"),
+               .get = py_drsuapi_DsAddEntry_AttrErr_V1_get_problem,
+               .set = py_drsuapi_DsAddEntry_AttrErr_V1_set_problem,
+               .doc = discard_const_p(char, "PIDL-generated element problem")
+       },
+       {
+               .name = discard_const_p(char, "attid"),
+               .get = py_drsuapi_DsAddEntry_AttrErr_V1_get_attid,
+               .set = py_drsuapi_DsAddEntry_AttrErr_V1_set_attid,
+               .doc = discard_const_p(char, "PIDL-generated element attid")
+       },
+       {
+               .name = discard_const_p(char, "is_val_returned"),
+               .get = py_drsuapi_DsAddEntry_AttrErr_V1_get_is_val_returned,
+               .set = py_drsuapi_DsAddEntry_AttrErr_V1_set_is_val_returned,
+               .doc = discard_const_p(char, "PIDL-generated element is_val_returned")
+       },
+       {
+               .name = discard_const_p(char, "attr_val"),
+               .get = py_drsuapi_DsAddEntry_AttrErr_V1_get_attr_val,
+               .set = py_drsuapi_DsAddEntry_AttrErr_V1_set_attr_val,
+               .doc = discard_const_p(char, "PIDL-generated element attr_val")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntry_AttrErr_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -17384,7 +21981,6 @@ static PyTypeObject drsuapi_DsAddEntry_AttrErr_V1_Type = {
        .tp_getset = py_drsuapi_DsAddEntry_AttrErr_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntry_AttrErr_V1_new,
 };
 
@@ -17406,10 +22002,18 @@ static int py_drsuapi_DsAddEntry_AttrErrListItem_V1_set_next(PyObject *py_obj, P
 {
        struct drsuapi_DsAddEntry_AttrErrListItem_V1 *object = (struct drsuapi_DsAddEntry_AttrErrListItem_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->next));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->next");
+               return -1;
+       }
        if (value == Py_None) {
                object->next = NULL;
        } else {
                object->next = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->next");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsAddEntry_AttrErrListItem_V1_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -17431,6 +22035,10 @@ static PyObject *py_drsuapi_DsAddEntry_AttrErrListItem_V1_get_err_data(PyObject
 static int py_drsuapi_DsAddEntry_AttrErrListItem_V1_set_err_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_AttrErrListItem_V1 *object = (struct drsuapi_DsAddEntry_AttrErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->err_data");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsAddEntry_AttrErr_V1_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -17441,9 +22049,19 @@ static int py_drsuapi_DsAddEntry_AttrErrListItem_V1_set_err_data(PyObject *py_ob
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntry_AttrErrListItem_V1_getsetters[] = {
-       { discard_const_p(char, "next"), py_drsuapi_DsAddEntry_AttrErrListItem_V1_get_next, py_drsuapi_DsAddEntry_AttrErrListItem_V1_set_next },
-       { discard_const_p(char, "err_data"), py_drsuapi_DsAddEntry_AttrErrListItem_V1_get_err_data, py_drsuapi_DsAddEntry_AttrErrListItem_V1_set_err_data },
-       { NULL }
+       {
+               .name = discard_const_p(char, "next"),
+               .get = py_drsuapi_DsAddEntry_AttrErrListItem_V1_get_next,
+               .set = py_drsuapi_DsAddEntry_AttrErrListItem_V1_set_next,
+               .doc = discard_const_p(char, "PIDL-generated element next")
+       },
+       {
+               .name = discard_const_p(char, "err_data"),
+               .get = py_drsuapi_DsAddEntry_AttrErrListItem_V1_get_err_data,
+               .set = py_drsuapi_DsAddEntry_AttrErrListItem_V1_set_err_data,
+               .doc = discard_const_p(char, "PIDL-generated element err_data")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntry_AttrErrListItem_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -17458,7 +22076,6 @@ static PyTypeObject drsuapi_DsAddEntry_AttrErrListItem_V1_Type = {
        .tp_getset = py_drsuapi_DsAddEntry_AttrErrListItem_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntry_AttrErrListItem_V1_new,
 };
 
@@ -17480,10 +22097,18 @@ static int py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_id(PyObject *py_obj, PyObj
 {
        struct drsuapi_DsAddEntryErrorInfo_Attr_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Attr_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->id));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->id");
+               return -1;
+       }
        if (value == Py_None) {
                object->id = NULL;
        } else {
                object->id = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->id");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -17505,6 +22130,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_count(PyObject *obj,
 static int py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Attr_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Attr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -17548,6 +22177,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_first(PyObject *obj,
 static int py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_first(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Attr_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Attr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->first");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsAddEntry_AttrErrListItem_V1_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -17558,10 +22191,25 @@ static int py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_first(PyObject *py_obj, Py
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryErrorInfo_Attr_V1_getsetters[] = {
-       { discard_const_p(char, "id"), py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_id, py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_id },
-       { discard_const_p(char, "count"), py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_count, py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_count },
-       { discard_const_p(char, "first"), py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_first, py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_first },
-       { NULL }
+       {
+               .name = discard_const_p(char, "id"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_id,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_id,
+               .doc = discard_const_p(char, "PIDL-generated element id")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_count,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "first"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_get_first,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_set_first,
+               .doc = discard_const_p(char, "PIDL-generated element first")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryErrorInfo_Attr_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -17576,7 +22224,6 @@ static PyTypeObject drsuapi_DsAddEntryErrorInfo_Attr_V1_Type = {
        .tp_getset = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryErrorInfo_Attr_V1_new,
 };
 
@@ -17592,6 +22239,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_dsid(PyObject *obj,
 static int py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_dsid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Name_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Name_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dsid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dsid));
                if (PyLong_Check(value)) {
@@ -17635,6 +22286,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_extended_err(PyObjec
 static int py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_extended_err(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Name_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Name_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_err");
+               return -1;
+       }
        object->extended_err = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -17650,6 +22305,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_extended_data(PyObje
 static int py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_extended_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Name_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Name_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_data");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_data));
                if (PyLong_Check(value)) {
@@ -17693,6 +22352,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_problem(PyObject *ob
 static int py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_problem(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Name_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Name_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->problem");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->problem));
                if (PyLong_Check(value)) {
@@ -17742,10 +22405,18 @@ static int py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_id_matched(PyObject *py_ob
 {
        struct drsuapi_DsAddEntryErrorInfo_Name_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Name_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->id_matched));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->id_matched");
+               return -1;
+       }
        if (value == Py_None) {
                object->id_matched = NULL;
        } else {
                object->id_matched = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->id_matched");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -17757,12 +22428,37 @@ static int py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_id_matched(PyObject *py_ob
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryErrorInfo_Name_V1_getsetters[] = {
-       { discard_const_p(char, "dsid"), py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_dsid, py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_dsid },
-       { discard_const_p(char, "extended_err"), py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_extended_err, py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_extended_err },
-       { discard_const_p(char, "extended_data"), py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_extended_data, py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_extended_data },
-       { discard_const_p(char, "problem"), py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_problem, py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_problem },
-       { discard_const_p(char, "id_matched"), py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_id_matched, py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_id_matched },
-       { NULL }
+       {
+               .name = discard_const_p(char, "dsid"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_dsid,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_dsid,
+               .doc = discard_const_p(char, "PIDL-generated element dsid")
+       },
+       {
+               .name = discard_const_p(char, "extended_err"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_extended_err,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_extended_err,
+               .doc = discard_const_p(char, "PIDL-generated element extended_err")
+       },
+       {
+               .name = discard_const_p(char, "extended_data"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_extended_data,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_extended_data,
+               .doc = discard_const_p(char, "PIDL-generated element extended_data")
+       },
+       {
+               .name = discard_const_p(char, "problem"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_problem,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_problem,
+               .doc = discard_const_p(char, "PIDL-generated element problem")
+       },
+       {
+               .name = discard_const_p(char, "id_matched"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Name_V1_get_id_matched,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Name_V1_set_id_matched,
+               .doc = discard_const_p(char, "PIDL-generated element id_matched")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryErrorInfo_Name_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -17777,7 +22473,6 @@ static PyTypeObject drsuapi_DsAddEntryErrorInfo_Name_V1_Type = {
        .tp_getset = py_drsuapi_DsAddEntryErrorInfo_Name_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryErrorInfo_Name_V1_new,
 };
 
@@ -17793,6 +22488,10 @@ static PyObject *py_drsuapi_NameResOp_V1_get_name_res(PyObject *obj, void *closu
 static int py_drsuapi_NameResOp_V1_set_name_res(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_NameResOp_V1 *object = (struct drsuapi_NameResOp_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->name_res");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->name_res));
                if (PyLong_Check(value)) {
@@ -17836,6 +22535,10 @@ static PyObject *py_drsuapi_NameResOp_V1_get_unused_pad(PyObject *obj, void *clo
 static int py_drsuapi_NameResOp_V1_set_unused_pad(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_NameResOp_V1 *object = (struct drsuapi_NameResOp_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->unused_pad");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->unused_pad));
                if (PyLong_Check(value)) {
@@ -17879,6 +22582,10 @@ static PyObject *py_drsuapi_NameResOp_V1_get_next_rdn(PyObject *obj, void *closu
 static int py_drsuapi_NameResOp_V1_set_next_rdn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_NameResOp_V1 *object = (struct drsuapi_NameResOp_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->next_rdn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->next_rdn));
                if (PyLong_Check(value)) {
@@ -17912,10 +22619,25 @@ static int py_drsuapi_NameResOp_V1_set_next_rdn(PyObject *py_obj, PyObject *valu
 }
 
 static PyGetSetDef py_drsuapi_NameResOp_V1_getsetters[] = {
-       { discard_const_p(char, "name_res"), py_drsuapi_NameResOp_V1_get_name_res, py_drsuapi_NameResOp_V1_set_name_res },
-       { discard_const_p(char, "unused_pad"), py_drsuapi_NameResOp_V1_get_unused_pad, py_drsuapi_NameResOp_V1_set_unused_pad },
-       { discard_const_p(char, "next_rdn"), py_drsuapi_NameResOp_V1_get_next_rdn, py_drsuapi_NameResOp_V1_set_next_rdn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "name_res"),
+               .get = py_drsuapi_NameResOp_V1_get_name_res,
+               .set = py_drsuapi_NameResOp_V1_set_name_res,
+               .doc = discard_const_p(char, "PIDL-generated element name_res")
+       },
+       {
+               .name = discard_const_p(char, "unused_pad"),
+               .get = py_drsuapi_NameResOp_V1_get_unused_pad,
+               .set = py_drsuapi_NameResOp_V1_set_unused_pad,
+               .doc = discard_const_p(char, "PIDL-generated element unused_pad")
+       },
+       {
+               .name = discard_const_p(char, "next_rdn"),
+               .get = py_drsuapi_NameResOp_V1_get_next_rdn,
+               .set = py_drsuapi_NameResOp_V1_set_next_rdn,
+               .doc = discard_const_p(char, "PIDL-generated element next_rdn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_NameResOp_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -17930,7 +22652,6 @@ static PyTypeObject drsuapi_NameResOp_V1_Type = {
        .tp_getset = py_drsuapi_NameResOp_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_NameResOp_V1_new,
 };
 
@@ -17952,10 +22673,18 @@ static int py_drsuapi_DsaAddressListItem_V1_set_next(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsaAddressListItem_V1 *object = (struct drsuapi_DsaAddressListItem_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->next));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->next");
+               return -1;
+       }
        if (value == Py_None) {
                object->next = NULL;
        } else {
                object->next = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->next");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsaAddressListItem_V1_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -17983,10 +22712,18 @@ static int py_drsuapi_DsaAddressListItem_V1_set_address(PyObject *py_obj, PyObje
 {
        struct drsuapi_DsaAddressListItem_V1 *object = (struct drsuapi_DsaAddressListItem_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->address));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->address");
+               return -1;
+       }
        if (value == Py_None) {
                object->address = NULL;
        } else {
                object->address = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->address");
+                       return -1;
+               }
                PY_CHECK_TYPE(lsa_String_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -17998,9 +22735,19 @@ static int py_drsuapi_DsaAddressListItem_V1_set_address(PyObject *py_obj, PyObje
 }
 
 static PyGetSetDef py_drsuapi_DsaAddressListItem_V1_getsetters[] = {
-       { discard_const_p(char, "next"), py_drsuapi_DsaAddressListItem_V1_get_next, py_drsuapi_DsaAddressListItem_V1_set_next },
-       { discard_const_p(char, "address"), py_drsuapi_DsaAddressListItem_V1_get_address, py_drsuapi_DsaAddressListItem_V1_set_address },
-       { NULL }
+       {
+               .name = discard_const_p(char, "next"),
+               .get = py_drsuapi_DsaAddressListItem_V1_get_next,
+               .set = py_drsuapi_DsaAddressListItem_V1_set_next,
+               .doc = discard_const_p(char, "PIDL-generated element next")
+       },
+       {
+               .name = discard_const_p(char, "address"),
+               .get = py_drsuapi_DsaAddressListItem_V1_get_address,
+               .set = py_drsuapi_DsaAddressListItem_V1_set_address,
+               .doc = discard_const_p(char, "PIDL-generated element address")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsaAddressListItem_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -18015,7 +22762,6 @@ static PyTypeObject drsuapi_DsaAddressListItem_V1_Type = {
        .tp_getset = py_drsuapi_DsaAddressListItem_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsaAddressListItem_V1_new,
 };
 
@@ -18037,10 +22783,18 @@ static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_id_target(PyObject *py_ob
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->id_target));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->id_target");
+               return -1;
+       }
        if (value == Py_None) {
                object->id_target = NULL;
        } else {
                object->id_target = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->id_target");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -18062,6 +22816,10 @@ static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_get_op_state(PyObject *
 static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_op_state(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->op_state");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_NameResOp_V1_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -18082,6 +22840,10 @@ static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_get_rdn_alias(PyObject
 static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_rdn_alias(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->rdn_alias");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->rdn_alias));
                if (PyLong_Check(value)) {
@@ -18125,6 +22887,10 @@ static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_get_rdn_internal(PyObje
 static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_rdn_internal(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->rdn_internal");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->rdn_internal));
                if (PyLong_Check(value)) {
@@ -18168,6 +22934,10 @@ static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_get_ref_type(PyObject *
 static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_ref_type(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ref_type");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->ref_type));
                if (PyLong_Check(value)) {
@@ -18211,6 +22981,10 @@ static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_get_addr_list_count(PyO
 static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_addr_list_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->addr_list_count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->addr_list_count));
                if (PyLong_Check(value)) {
@@ -18260,10 +23034,18 @@ static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_addr_list(PyObject *py_ob
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->addr_list));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->addr_list");
+               return -1;
+       }
        if (value == Py_None) {
                object->addr_list = NULL;
        } else {
                object->addr_list = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->addr_list");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsaAddressListItem_V1_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -18291,10 +23073,18 @@ static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_next(PyObject *py_obj, Py
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->next));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->next");
+               return -1;
+       }
        if (value == Py_None) {
                object->next = NULL;
        } else {
                object->next = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->next");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsAddEntry_RefErrListItem_V1_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -18316,6 +23106,10 @@ static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_get_is_choice_set(PyObj
 static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_is_choice_set(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->is_choice_set");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->is_choice_set));
                if (PyLong_Check(value)) {
@@ -18359,6 +23153,10 @@ static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_get_choice(PyObject *ob
 static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_choice(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_RefErrListItem_V1 *object = (struct drsuapi_DsAddEntry_RefErrListItem_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->choice");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->choice));
                if (PyLong_Check(value)) {
@@ -18392,17 +23190,67 @@ static int py_drsuapi_DsAddEntry_RefErrListItem_V1_set_choice(PyObject *py_obj,
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntry_RefErrListItem_V1_getsetters[] = {
-       { discard_const_p(char, "id_target"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_id_target, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_id_target },
-       { discard_const_p(char, "op_state"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_op_state, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_op_state },
-       { discard_const_p(char, "rdn_alias"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_rdn_alias, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_rdn_alias },
-       { discard_const_p(char, "rdn_internal"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_rdn_internal, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_rdn_internal },
-       { discard_const_p(char, "ref_type"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_ref_type, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_ref_type },
-       { discard_const_p(char, "addr_list_count"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_addr_list_count, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_addr_list_count },
-       { discard_const_p(char, "addr_list"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_addr_list, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_addr_list },
-       { discard_const_p(char, "next"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_next, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_next },
-       { discard_const_p(char, "is_choice_set"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_is_choice_set, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_is_choice_set },
-       { discard_const_p(char, "choice"), py_drsuapi_DsAddEntry_RefErrListItem_V1_get_choice, py_drsuapi_DsAddEntry_RefErrListItem_V1_set_choice },
-       { NULL }
+       {
+               .name = discard_const_p(char, "id_target"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_id_target,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_id_target,
+               .doc = discard_const_p(char, "PIDL-generated element id_target")
+       },
+       {
+               .name = discard_const_p(char, "op_state"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_op_state,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_op_state,
+               .doc = discard_const_p(char, "PIDL-generated element op_state")
+       },
+       {
+               .name = discard_const_p(char, "rdn_alias"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_rdn_alias,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_rdn_alias,
+               .doc = discard_const_p(char, "PIDL-generated element rdn_alias")
+       },
+       {
+               .name = discard_const_p(char, "rdn_internal"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_rdn_internal,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_rdn_internal,
+               .doc = discard_const_p(char, "PIDL-generated element rdn_internal")
+       },
+       {
+               .name = discard_const_p(char, "ref_type"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_ref_type,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_ref_type,
+               .doc = discard_const_p(char, "PIDL-generated element ref_type")
+       },
+       {
+               .name = discard_const_p(char, "addr_list_count"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_addr_list_count,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_addr_list_count,
+               .doc = discard_const_p(char, "PIDL-generated element addr_list_count")
+       },
+       {
+               .name = discard_const_p(char, "addr_list"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_addr_list,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_addr_list,
+               .doc = discard_const_p(char, "PIDL-generated element addr_list")
+       },
+       {
+               .name = discard_const_p(char, "next"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_next,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_next,
+               .doc = discard_const_p(char, "PIDL-generated element next")
+       },
+       {
+               .name = discard_const_p(char, "is_choice_set"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_is_choice_set,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_is_choice_set,
+               .doc = discard_const_p(char, "PIDL-generated element is_choice_set")
+       },
+       {
+               .name = discard_const_p(char, "choice"),
+               .get = py_drsuapi_DsAddEntry_RefErrListItem_V1_get_choice,
+               .set = py_drsuapi_DsAddEntry_RefErrListItem_V1_set_choice,
+               .doc = discard_const_p(char, "PIDL-generated element choice")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntry_RefErrListItem_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -18417,7 +23265,6 @@ static PyTypeObject drsuapi_DsAddEntry_RefErrListItem_V1_Type = {
        .tp_getset = py_drsuapi_DsAddEntry_RefErrListItem_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntry_RefErrListItem_V1_new,
 };
 
@@ -18433,6 +23280,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_dsid(PyObject *obj
 static int py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_dsid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dsid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dsid));
                if (PyLong_Check(value)) {
@@ -18476,6 +23327,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_extended_err(PyObj
 static int py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_extended_err(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_err");
+               return -1;
+       }
        object->extended_err = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -18491,6 +23346,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_extended_data(PyOb
 static int py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_extended_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_data");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_data));
                if (PyLong_Check(value)) {
@@ -18534,6 +23393,10 @@ static PyObject *py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_refer(PyObject *ob
 static int py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_refer(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *object = (struct drsuapi_DsAddEntryErrorInfo_Referr_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->refer");
+               return -1;
+       }
        PY_CHECK_TYPE(&drsuapi_DsAddEntry_RefErrListItem_V1_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -18544,11 +23407,31 @@ static int py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_refer(PyObject *py_obj,
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryErrorInfo_Referr_V1_getsetters[] = {
-       { discard_const_p(char, "dsid"), py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_dsid, py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_dsid },
-       { discard_const_p(char, "extended_err"), py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_extended_err, py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_extended_err },
-       { discard_const_p(char, "extended_data"), py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_extended_data, py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_extended_data },
-       { discard_const_p(char, "refer"), py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_refer, py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_refer },
-       { NULL }
+       {
+               .name = discard_const_p(char, "dsid"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_dsid,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_dsid,
+               .doc = discard_const_p(char, "PIDL-generated element dsid")
+       },
+       {
+               .name = discard_const_p(char, "extended_err"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_extended_err,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_extended_err,
+               .doc = discard_const_p(char, "PIDL-generated element extended_err")
+       },
+       {
+               .name = discard_const_p(char, "extended_data"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_extended_data,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_extended_data,
+               .doc = discard_const_p(char, "PIDL-generated element extended_data")
+       },
+       {
+               .name = discard_const_p(char, "refer"),
+               .get = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_get_refer,
+               .set = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_set_refer,
+               .doc = discard_const_p(char, "PIDL-generated element refer")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryErrorInfo_Referr_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -18563,7 +23446,6 @@ static PyTypeObject drsuapi_DsAddEntryErrorInfo_Referr_V1_Type = {
        .tp_getset = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryErrorInfo_Referr_V1_new,
 };
 
@@ -18610,6 +23492,10 @@ union drsuapi_DsAddEntryErrorInfo *py_export_drsuapi_DsAddEntryErrorInfo(TALLOC_
        union drsuapi_DsAddEntryErrorInfo *ret = talloc_zero(mem_ctx, union drsuapi_DsAddEntryErrorInfo);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->attr_err");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryErrorInfo_Attr_V1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18619,6 +23505,10 @@ union drsuapi_DsAddEntryErrorInfo *py_export_drsuapi_DsAddEntryErrorInfo(TALLOC_
                        break;
 
                case 2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->name_err");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryErrorInfo_Name_V1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18628,6 +23518,10 @@ union drsuapi_DsAddEntryErrorInfo *py_export_drsuapi_DsAddEntryErrorInfo(TALLOC_
                        break;
 
                case 3:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->referral_err");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryErrorInfo_Referr_V1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18637,6 +23531,10 @@ union drsuapi_DsAddEntryErrorInfo *py_export_drsuapi_DsAddEntryErrorInfo(TALLOC_
                        break;
 
                case 4:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->security_err");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryErrorInfoX_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18646,6 +23544,10 @@ union drsuapi_DsAddEntryErrorInfo *py_export_drsuapi_DsAddEntryErrorInfo(TALLOC_
                        break;
 
                case 5:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->service_err");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryErrorInfoX_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18655,6 +23557,10 @@ union drsuapi_DsAddEntryErrorInfo *py_export_drsuapi_DsAddEntryErrorInfo(TALLOC_
                        break;
 
                case 6:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->update_err");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryErrorInfoX_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18664,6 +23570,10 @@ union drsuapi_DsAddEntryErrorInfo *py_export_drsuapi_DsAddEntryErrorInfo(TALLOC_
                        break;
 
                case 7:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->system_err");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryErrorInfoX_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18693,6 +23603,10 @@ static PyObject *py_drsuapi_DsAddEntry_ErrData_V1_get_status(PyObject *obj, void
 static int py_drsuapi_DsAddEntry_ErrData_V1_set_status(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_ErrData_V1 *object = (struct drsuapi_DsAddEntry_ErrData_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->status");
+               return -1;
+       }
        object->status = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -18708,6 +23622,10 @@ static PyObject *py_drsuapi_DsAddEntry_ErrData_V1_get_dir_err(PyObject *obj, voi
 static int py_drsuapi_DsAddEntry_ErrData_V1_set_dir_err(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntry_ErrData_V1 *object = (struct drsuapi_DsAddEntry_ErrData_V1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dir_err");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dir_err));
                if (PyLong_Check(value)) {
@@ -18760,10 +23678,18 @@ static int py_drsuapi_DsAddEntry_ErrData_V1_set_info(PyObject *py_obj, PyObject
 {
        struct drsuapi_DsAddEntry_ErrData_V1 *object = (struct drsuapi_DsAddEntry_ErrData_V1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->info));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info");
+               return -1;
+       }
        if (value == Py_None) {
                object->info = NULL;
        } else {
                object->info = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->info");
+                       return -1;
+               }
                {
                        union drsuapi_DsAddEntryErrorInfo *info_switch_1;
                        info_switch_1 = py_export_drsuapi_DsAddEntryErrorInfo(pytalloc_get_mem_ctx(py_obj), object->dir_err, value);
@@ -18777,10 +23703,25 @@ static int py_drsuapi_DsAddEntry_ErrData_V1_set_info(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntry_ErrData_V1_getsetters[] = {
-       { discard_const_p(char, "status"), py_drsuapi_DsAddEntry_ErrData_V1_get_status, py_drsuapi_DsAddEntry_ErrData_V1_set_status },
-       { discard_const_p(char, "dir_err"), py_drsuapi_DsAddEntry_ErrData_V1_get_dir_err, py_drsuapi_DsAddEntry_ErrData_V1_set_dir_err },
-       { discard_const_p(char, "info"), py_drsuapi_DsAddEntry_ErrData_V1_get_info, py_drsuapi_DsAddEntry_ErrData_V1_set_info },
-       { NULL }
+       {
+               .name = discard_const_p(char, "status"),
+               .get = py_drsuapi_DsAddEntry_ErrData_V1_get_status,
+               .set = py_drsuapi_DsAddEntry_ErrData_V1_set_status,
+               .doc = discard_const_p(char, "PIDL-generated element status")
+       },
+       {
+               .name = discard_const_p(char, "dir_err"),
+               .get = py_drsuapi_DsAddEntry_ErrData_V1_get_dir_err,
+               .set = py_drsuapi_DsAddEntry_ErrData_V1_set_dir_err,
+               .doc = discard_const_p(char, "PIDL-generated element dir_err")
+       },
+       {
+               .name = discard_const_p(char, "info"),
+               .get = py_drsuapi_DsAddEntry_ErrData_V1_get_info,
+               .set = py_drsuapi_DsAddEntry_ErrData_V1_set_info,
+               .doc = discard_const_p(char, "PIDL-generated element info")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntry_ErrData_V1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -18795,7 +23736,6 @@ static PyTypeObject drsuapi_DsAddEntry_ErrData_V1_Type = {
        .tp_getset = py_drsuapi_DsAddEntry_ErrData_V1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntry_ErrData_V1_new,
 };
 
@@ -18818,6 +23758,10 @@ union drsuapi_DsAddEntry_ErrData *py_export_drsuapi_DsAddEntry_ErrData(TALLOC_CT
        union drsuapi_DsAddEntry_ErrData *ret = talloc_zero(mem_ctx, union drsuapi_DsAddEntry_ErrData);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->v1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntry_ErrData_V1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -18847,6 +23791,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier2_get_guid(PyObject *obj, v
 static int py_drsuapi_DsReplicaObjectIdentifier2_set_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier2 *object = (struct drsuapi_DsReplicaObjectIdentifier2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -18867,6 +23815,10 @@ static PyObject *py_drsuapi_DsReplicaObjectIdentifier2_get_sid(PyObject *obj, vo
 static int py_drsuapi_DsReplicaObjectIdentifier2_set_sid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjectIdentifier2 *object = (struct drsuapi_DsReplicaObjectIdentifier2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->sid");
+               return -1;
+       }
        PY_CHECK_TYPE(dom_sid_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -18877,9 +23829,19 @@ static int py_drsuapi_DsReplicaObjectIdentifier2_set_sid(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjectIdentifier2_getsetters[] = {
-       { discard_const_p(char, "guid"), py_drsuapi_DsReplicaObjectIdentifier2_get_guid, py_drsuapi_DsReplicaObjectIdentifier2_set_guid },
-       { discard_const_p(char, "sid"), py_drsuapi_DsReplicaObjectIdentifier2_get_sid, py_drsuapi_DsReplicaObjectIdentifier2_set_sid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "guid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier2_get_guid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier2_set_guid,
+               .doc = discard_const_p(char, "PIDL-generated element guid")
+       },
+       {
+               .name = discard_const_p(char, "sid"),
+               .get = py_drsuapi_DsReplicaObjectIdentifier2_get_sid,
+               .set = py_drsuapi_DsReplicaObjectIdentifier2_set_sid,
+               .doc = discard_const_p(char, "PIDL-generated element sid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjectIdentifier2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -18894,7 +23856,6 @@ static PyTypeObject drsuapi_DsReplicaObjectIdentifier2_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjectIdentifier2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjectIdentifier2_new,
 };
 
@@ -18916,10 +23877,18 @@ static int py_drsuapi_DsAddEntryCtr2_set_id(PyObject *py_obj, PyObject *value, v
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->id));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->id");
+               return -1;
+       }
        if (value == Py_None) {
                object->id = NULL;
        } else {
                object->id = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->id");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -18941,6 +23910,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr2_get_dir_err(PyObject *obj, void *clos
 static int py_drsuapi_DsAddEntryCtr2_set_dir_err(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dir_err");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dir_err));
                if (PyLong_Check(value)) {
@@ -18984,6 +23957,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr2_get_dsid(PyObject *obj, void *closure
 static int py_drsuapi_DsAddEntryCtr2_set_dsid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dsid");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dsid));
                if (PyLong_Check(value)) {
@@ -19027,6 +24004,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr2_get_extended_err(PyObject *obj, void
 static int py_drsuapi_DsAddEntryCtr2_set_extended_err(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_err");
+               return -1;
+       }
        object->extended_err = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -19042,6 +24023,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr2_get_extended_data(PyObject *obj, void
 static int py_drsuapi_DsAddEntryCtr2_set_extended_data(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->extended_data");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->extended_data));
                if (PyLong_Check(value)) {
@@ -19085,6 +24070,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr2_get_problem(PyObject *obj, void *clos
 static int py_drsuapi_DsAddEntryCtr2_set_problem(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->problem");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->problem));
                if (PyLong_Check(value)) {
@@ -19128,6 +24117,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr2_get_count(PyObject *obj, void *closur
 static int py_drsuapi_DsAddEntryCtr2_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -19188,10 +24181,18 @@ static int py_drsuapi_DsAddEntryCtr2_set_objects(PyObject *py_obj, PyObject *val
 {
        struct drsuapi_DsAddEntryCtr2 *object = (struct drsuapi_DsAddEntryCtr2 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->objects));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->objects");
+               return -1;
+       }
        if (value == Py_None) {
                object->objects = NULL;
        } else {
                object->objects = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->objects");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int objects_cntr_1;
@@ -19199,6 +24200,10 @@ static int py_drsuapi_DsAddEntryCtr2_set_objects(PyObject *py_obj, PyObject *val
                        if (!object->objects) { return -1;; }
                        talloc_set_name_const(object->objects, "ARRAY: object->objects");
                        for (objects_cntr_1 = 0; objects_cntr_1 < PyList_GET_SIZE(value); objects_cntr_1++) {
+                               if (PyList_GET_ITEM(value, objects_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->objects[objects_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier2_Type, PyList_GET_ITEM(value, objects_cntr_1), return -1;);
                                if (talloc_reference(object->objects, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, objects_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -19212,15 +24217,55 @@ static int py_drsuapi_DsAddEntryCtr2_set_objects(PyObject *py_obj, PyObject *val
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryCtr2_getsetters[] = {
-       { discard_const_p(char, "id"), py_drsuapi_DsAddEntryCtr2_get_id, py_drsuapi_DsAddEntryCtr2_set_id },
-       { discard_const_p(char, "dir_err"), py_drsuapi_DsAddEntryCtr2_get_dir_err, py_drsuapi_DsAddEntryCtr2_set_dir_err },
-       { discard_const_p(char, "dsid"), py_drsuapi_DsAddEntryCtr2_get_dsid, py_drsuapi_DsAddEntryCtr2_set_dsid },
-       { discard_const_p(char, "extended_err"), py_drsuapi_DsAddEntryCtr2_get_extended_err, py_drsuapi_DsAddEntryCtr2_set_extended_err },
-       { discard_const_p(char, "extended_data"), py_drsuapi_DsAddEntryCtr2_get_extended_data, py_drsuapi_DsAddEntryCtr2_set_extended_data },
-       { discard_const_p(char, "problem"), py_drsuapi_DsAddEntryCtr2_get_problem, py_drsuapi_DsAddEntryCtr2_set_problem },
-       { discard_const_p(char, "count"), py_drsuapi_DsAddEntryCtr2_get_count, py_drsuapi_DsAddEntryCtr2_set_count },
-       { discard_const_p(char, "objects"), py_drsuapi_DsAddEntryCtr2_get_objects, py_drsuapi_DsAddEntryCtr2_set_objects },
-       { NULL }
+       {
+               .name = discard_const_p(char, "id"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_id,
+               .set = py_drsuapi_DsAddEntryCtr2_set_id,
+               .doc = discard_const_p(char, "PIDL-generated element id")
+       },
+       {
+               .name = discard_const_p(char, "dir_err"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_dir_err,
+               .set = py_drsuapi_DsAddEntryCtr2_set_dir_err,
+               .doc = discard_const_p(char, "PIDL-generated element dir_err")
+       },
+       {
+               .name = discard_const_p(char, "dsid"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_dsid,
+               .set = py_drsuapi_DsAddEntryCtr2_set_dsid,
+               .doc = discard_const_p(char, "PIDL-generated element dsid")
+       },
+       {
+               .name = discard_const_p(char, "extended_err"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_extended_err,
+               .set = py_drsuapi_DsAddEntryCtr2_set_extended_err,
+               .doc = discard_const_p(char, "PIDL-generated element extended_err")
+       },
+       {
+               .name = discard_const_p(char, "extended_data"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_extended_data,
+               .set = py_drsuapi_DsAddEntryCtr2_set_extended_data,
+               .doc = discard_const_p(char, "PIDL-generated element extended_data")
+       },
+       {
+               .name = discard_const_p(char, "problem"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_problem,
+               .set = py_drsuapi_DsAddEntryCtr2_set_problem,
+               .doc = discard_const_p(char, "PIDL-generated element problem")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_count,
+               .set = py_drsuapi_DsAddEntryCtr2_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "objects"),
+               .get = py_drsuapi_DsAddEntryCtr2_get_objects,
+               .set = py_drsuapi_DsAddEntryCtr2_set_objects,
+               .doc = discard_const_p(char, "PIDL-generated element objects")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryCtr2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -19235,7 +24280,6 @@ static PyTypeObject drsuapi_DsAddEntryCtr2_Type = {
        .tp_getset = py_drsuapi_DsAddEntryCtr2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryCtr2_new,
 };
 
@@ -19257,10 +24301,18 @@ static int py_drsuapi_DsAddEntryCtr3_set_id(PyObject *py_obj, PyObject *value, v
 {
        struct drsuapi_DsAddEntryCtr3 *object = (struct drsuapi_DsAddEntryCtr3 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->id));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->id");
+               return -1;
+       }
        if (value == Py_None) {
                object->id = NULL;
        } else {
                object->id = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->id");
+                       return -1;
+               }
                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier_Type, value, return -1;);
                if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                        PyErr_NoMemory();
@@ -19282,6 +24334,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr3_get_err_ver(PyObject *obj, void *clos
 static int py_drsuapi_DsAddEntryCtr3_set_err_ver(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr3 *object = (struct drsuapi_DsAddEntryCtr3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->err_ver");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->err_ver));
                if (PyLong_Check(value)) {
@@ -19334,10 +24390,18 @@ static int py_drsuapi_DsAddEntryCtr3_set_err_data(PyObject *py_obj, PyObject *va
 {
        struct drsuapi_DsAddEntryCtr3 *object = (struct drsuapi_DsAddEntryCtr3 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->err_data));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->err_data");
+               return -1;
+       }
        if (value == Py_None) {
                object->err_data = NULL;
        } else {
                object->err_data = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->err_data");
+                       return -1;
+               }
                {
                        union drsuapi_DsAddEntry_ErrData *err_data_switch_1;
                        err_data_switch_1 = py_export_drsuapi_DsAddEntry_ErrData(pytalloc_get_mem_ctx(py_obj), object->err_ver, value);
@@ -19361,6 +24425,10 @@ static PyObject *py_drsuapi_DsAddEntryCtr3_get_count(PyObject *obj, void *closur
 static int py_drsuapi_DsAddEntryCtr3_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsAddEntryCtr3 *object = (struct drsuapi_DsAddEntryCtr3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -19421,10 +24489,18 @@ static int py_drsuapi_DsAddEntryCtr3_set_objects(PyObject *py_obj, PyObject *val
 {
        struct drsuapi_DsAddEntryCtr3 *object = (struct drsuapi_DsAddEntryCtr3 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->objects));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->objects");
+               return -1;
+       }
        if (value == Py_None) {
                object->objects = NULL;
        } else {
                object->objects = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->objects");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int objects_cntr_1;
@@ -19432,6 +24508,10 @@ static int py_drsuapi_DsAddEntryCtr3_set_objects(PyObject *py_obj, PyObject *val
                        if (!object->objects) { return -1;; }
                        talloc_set_name_const(object->objects, "ARRAY: object->objects");
                        for (objects_cntr_1 = 0; objects_cntr_1 < PyList_GET_SIZE(value); objects_cntr_1++) {
+                               if (PyList_GET_ITEM(value, objects_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->objects[objects_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaObjectIdentifier2_Type, PyList_GET_ITEM(value, objects_cntr_1), return -1;);
                                if (talloc_reference(object->objects, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, objects_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -19445,12 +24525,37 @@ static int py_drsuapi_DsAddEntryCtr3_set_objects(PyObject *py_obj, PyObject *val
 }
 
 static PyGetSetDef py_drsuapi_DsAddEntryCtr3_getsetters[] = {
-       { discard_const_p(char, "id"), py_drsuapi_DsAddEntryCtr3_get_id, py_drsuapi_DsAddEntryCtr3_set_id },
-       { discard_const_p(char, "err_ver"), py_drsuapi_DsAddEntryCtr3_get_err_ver, py_drsuapi_DsAddEntryCtr3_set_err_ver },
-       { discard_const_p(char, "err_data"), py_drsuapi_DsAddEntryCtr3_get_err_data, py_drsuapi_DsAddEntryCtr3_set_err_data },
-       { discard_const_p(char, "count"), py_drsuapi_DsAddEntryCtr3_get_count, py_drsuapi_DsAddEntryCtr3_set_count },
-       { discard_const_p(char, "objects"), py_drsuapi_DsAddEntryCtr3_get_objects, py_drsuapi_DsAddEntryCtr3_set_objects },
-       { NULL }
+       {
+               .name = discard_const_p(char, "id"),
+               .get = py_drsuapi_DsAddEntryCtr3_get_id,
+               .set = py_drsuapi_DsAddEntryCtr3_set_id,
+               .doc = discard_const_p(char, "PIDL-generated element id")
+       },
+       {
+               .name = discard_const_p(char, "err_ver"),
+               .get = py_drsuapi_DsAddEntryCtr3_get_err_ver,
+               .set = py_drsuapi_DsAddEntryCtr3_set_err_ver,
+               .doc = discard_const_p(char, "PIDL-generated element err_ver")
+       },
+       {
+               .name = discard_const_p(char, "err_data"),
+               .get = py_drsuapi_DsAddEntryCtr3_get_err_data,
+               .set = py_drsuapi_DsAddEntryCtr3_set_err_data,
+               .doc = discard_const_p(char, "PIDL-generated element err_data")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsAddEntryCtr3_get_count,
+               .set = py_drsuapi_DsAddEntryCtr3_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "objects"),
+               .get = py_drsuapi_DsAddEntryCtr3_get_objects,
+               .set = py_drsuapi_DsAddEntryCtr3_set_objects,
+               .doc = discard_const_p(char, "PIDL-generated element objects")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsAddEntryCtr3_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -19465,7 +24570,6 @@ static PyTypeObject drsuapi_DsAddEntryCtr3_Type = {
        .tp_getset = py_drsuapi_DsAddEntryCtr3_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsAddEntryCtr3_new,
 };
 
@@ -19492,6 +24596,10 @@ union drsuapi_DsAddEntryCtr *py_export_drsuapi_DsAddEntryCtr(TALLOC_CTX *mem_ctx
        union drsuapi_DsAddEntryCtr *ret = talloc_zero(mem_ctx, union drsuapi_DsAddEntryCtr);
        switch (level) {
                case 2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr2");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryCtr2_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -19501,6 +24609,10 @@ union drsuapi_DsAddEntryCtr *py_export_drsuapi_DsAddEntryCtr(TALLOC_CTX *mem_ctx
                        break;
 
                case 3:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr3");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsAddEntryCtr3_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -19530,6 +24642,10 @@ static PyObject *py_drsuapi_DsExecuteKCC1_get_taskID(PyObject *obj, void *closur
 static int py_drsuapi_DsExecuteKCC1_set_taskID(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsExecuteKCC1 *object = (struct drsuapi_DsExecuteKCC1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->taskID");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->taskID));
                if (PyLong_Check(value)) {
@@ -19573,6 +24689,10 @@ static PyObject *py_drsuapi_DsExecuteKCC1_get_flags(PyObject *obj, void *closure
 static int py_drsuapi_DsExecuteKCC1_set_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsExecuteKCC1 *object = (struct drsuapi_DsExecuteKCC1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags));
                if (PyLong_Check(value)) {
@@ -19606,9 +24726,19 @@ static int py_drsuapi_DsExecuteKCC1_set_flags(PyObject *py_obj, PyObject *value,
 }
 
 static PyGetSetDef py_drsuapi_DsExecuteKCC1_getsetters[] = {
-       { discard_const_p(char, "taskID"), py_drsuapi_DsExecuteKCC1_get_taskID, py_drsuapi_DsExecuteKCC1_set_taskID },
-       { discard_const_p(char, "flags"), py_drsuapi_DsExecuteKCC1_get_flags, py_drsuapi_DsExecuteKCC1_set_flags },
-       { NULL }
+       {
+               .name = discard_const_p(char, "taskID"),
+               .get = py_drsuapi_DsExecuteKCC1_get_taskID,
+               .set = py_drsuapi_DsExecuteKCC1_set_taskID,
+               .doc = discard_const_p(char, "PIDL-generated element taskID")
+       },
+       {
+               .name = discard_const_p(char, "flags"),
+               .get = py_drsuapi_DsExecuteKCC1_get_flags,
+               .set = py_drsuapi_DsExecuteKCC1_set_flags,
+               .doc = discard_const_p(char, "PIDL-generated element flags")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsExecuteKCC1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -19623,7 +24753,6 @@ static PyTypeObject drsuapi_DsExecuteKCC1_Type = {
        .tp_getset = py_drsuapi_DsExecuteKCC1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsExecuteKCC1_new,
 };
 
@@ -19646,6 +24775,10 @@ union drsuapi_DsExecuteKCCRequest *py_export_drsuapi_DsExecuteKCCRequest(TALLOC_
        union drsuapi_DsExecuteKCCRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsExecuteKCCRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsExecuteKCC1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -19675,6 +24808,10 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest1_get_info_type(PyObject *obj
 static int py_drsuapi_DsReplicaGetInfoRequest1_set_info_type(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest1 *object = (struct drsuapi_DsReplicaGetInfoRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info_type");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->info_type));
                if (PyLong_Check(value)) {
@@ -19728,18 +24865,45 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest1_get_object_dn(PyObject *obj
 static int py_drsuapi_DsReplicaGetInfoRequest1_set_object_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest1 *object = (struct drsuapi_DsReplicaGetInfoRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->object_dn = NULL;
        } else {
                object->object_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->object_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->object_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -19755,6 +24919,10 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest1_get_source_dsa_guid(PyObjec
 static int py_drsuapi_DsReplicaGetInfoRequest1_set_source_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest1 *object = (struct drsuapi_DsReplicaGetInfoRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -19765,10 +24933,25 @@ static int py_drsuapi_DsReplicaGetInfoRequest1_set_source_dsa_guid(PyObject *py_
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaGetInfoRequest1_getsetters[] = {
-       { discard_const_p(char, "info_type"), py_drsuapi_DsReplicaGetInfoRequest1_get_info_type, py_drsuapi_DsReplicaGetInfoRequest1_set_info_type },
-       { discard_const_p(char, "object_dn"), py_drsuapi_DsReplicaGetInfoRequest1_get_object_dn, py_drsuapi_DsReplicaGetInfoRequest1_set_object_dn },
-       { discard_const_p(char, "source_dsa_guid"), py_drsuapi_DsReplicaGetInfoRequest1_get_source_dsa_guid, py_drsuapi_DsReplicaGetInfoRequest1_set_source_dsa_guid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "info_type"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest1_get_info_type,
+               .set = py_drsuapi_DsReplicaGetInfoRequest1_set_info_type,
+               .doc = discard_const_p(char, "PIDL-generated element info_type")
+       },
+       {
+               .name = discard_const_p(char, "object_dn"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest1_get_object_dn,
+               .set = py_drsuapi_DsReplicaGetInfoRequest1_set_object_dn,
+               .doc = discard_const_p(char, "PIDL-generated element object_dn")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_guid"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest1_get_source_dsa_guid,
+               .set = py_drsuapi_DsReplicaGetInfoRequest1_set_source_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_guid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaGetInfoRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -19783,7 +24966,6 @@ static PyTypeObject drsuapi_DsReplicaGetInfoRequest1_Type = {
        .tp_getset = py_drsuapi_DsReplicaGetInfoRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaGetInfoRequest1_new,
 };
 
@@ -19799,6 +24981,10 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_get_info_type(PyObject *obj
 static int py_drsuapi_DsReplicaGetInfoRequest2_set_info_type(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest2 *object = (struct drsuapi_DsReplicaGetInfoRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info_type");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->info_type));
                if (PyLong_Check(value)) {
@@ -19852,18 +25038,45 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_get_object_dn(PyObject *obj
 static int py_drsuapi_DsReplicaGetInfoRequest2_set_object_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest2 *object = (struct drsuapi_DsReplicaGetInfoRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->object_dn = NULL;
        } else {
                object->object_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->object_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->object_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -19879,6 +25092,10 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_get_source_dsa_guid(PyObjec
 static int py_drsuapi_DsReplicaGetInfoRequest2_set_source_dsa_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest2 *object = (struct drsuapi_DsReplicaGetInfoRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -19899,6 +25116,10 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_get_flags(PyObject *obj, vo
 static int py_drsuapi_DsReplicaGetInfoRequest2_set_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest2 *object = (struct drsuapi_DsReplicaGetInfoRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags));
                if (PyLong_Check(value)) {
@@ -19952,18 +25173,45 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_get_attribute_name(PyObject
 static int py_drsuapi_DsReplicaGetInfoRequest2_set_attribute_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest2 *object = (struct drsuapi_DsReplicaGetInfoRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attribute_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->attribute_name = NULL;
        } else {
                object->attribute_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->attribute_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->attribute_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -19989,18 +25237,45 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_get_value_dn_str(PyObject *
 static int py_drsuapi_DsReplicaGetInfoRequest2_set_value_dn_str(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest2 *object = (struct drsuapi_DsReplicaGetInfoRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->value_dn_str");
+               return -1;
+       }
        if (value == Py_None) {
                object->value_dn_str = NULL;
        } else {
                object->value_dn_str = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->value_dn_str = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->value_dn_str = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->value_dn_str");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->value_dn_str = talloc_str;
+               }
        }
        return 0;
 }
@@ -20016,6 +25291,10 @@ static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_get_enumeration_context(PyO
 static int py_drsuapi_DsReplicaGetInfoRequest2_set_enumeration_context(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaGetInfoRequest2 *object = (struct drsuapi_DsReplicaGetInfoRequest2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->enumeration_context");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->enumeration_context));
                if (PyLong_Check(value)) {
@@ -20049,14 +25328,49 @@ static int py_drsuapi_DsReplicaGetInfoRequest2_set_enumeration_context(PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaGetInfoRequest2_getsetters[] = {
-       { discard_const_p(char, "info_type"), py_drsuapi_DsReplicaGetInfoRequest2_get_info_type, py_drsuapi_DsReplicaGetInfoRequest2_set_info_type },
-       { discard_const_p(char, "object_dn"), py_drsuapi_DsReplicaGetInfoRequest2_get_object_dn, py_drsuapi_DsReplicaGetInfoRequest2_set_object_dn },
-       { discard_const_p(char, "source_dsa_guid"), py_drsuapi_DsReplicaGetInfoRequest2_get_source_dsa_guid, py_drsuapi_DsReplicaGetInfoRequest2_set_source_dsa_guid },
-       { discard_const_p(char, "flags"), py_drsuapi_DsReplicaGetInfoRequest2_get_flags, py_drsuapi_DsReplicaGetInfoRequest2_set_flags },
-       { discard_const_p(char, "attribute_name"), py_drsuapi_DsReplicaGetInfoRequest2_get_attribute_name, py_drsuapi_DsReplicaGetInfoRequest2_set_attribute_name },
-       { discard_const_p(char, "value_dn_str"), py_drsuapi_DsReplicaGetInfoRequest2_get_value_dn_str, py_drsuapi_DsReplicaGetInfoRequest2_set_value_dn_str },
-       { discard_const_p(char, "enumeration_context"), py_drsuapi_DsReplicaGetInfoRequest2_get_enumeration_context, py_drsuapi_DsReplicaGetInfoRequest2_set_enumeration_context },
-       { NULL }
+       {
+               .name = discard_const_p(char, "info_type"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest2_get_info_type,
+               .set = py_drsuapi_DsReplicaGetInfoRequest2_set_info_type,
+               .doc = discard_const_p(char, "PIDL-generated element info_type")
+       },
+       {
+               .name = discard_const_p(char, "object_dn"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest2_get_object_dn,
+               .set = py_drsuapi_DsReplicaGetInfoRequest2_set_object_dn,
+               .doc = discard_const_p(char, "PIDL-generated element object_dn")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_guid"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest2_get_source_dsa_guid,
+               .set = py_drsuapi_DsReplicaGetInfoRequest2_set_source_dsa_guid,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_guid")
+       },
+       {
+               .name = discard_const_p(char, "flags"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest2_get_flags,
+               .set = py_drsuapi_DsReplicaGetInfoRequest2_set_flags,
+               .doc = discard_const_p(char, "PIDL-generated element flags")
+       },
+       {
+               .name = discard_const_p(char, "attribute_name"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest2_get_attribute_name,
+               .set = py_drsuapi_DsReplicaGetInfoRequest2_set_attribute_name,
+               .doc = discard_const_p(char, "PIDL-generated element attribute_name")
+       },
+       {
+               .name = discard_const_p(char, "value_dn_str"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest2_get_value_dn_str,
+               .set = py_drsuapi_DsReplicaGetInfoRequest2_set_value_dn_str,
+               .doc = discard_const_p(char, "PIDL-generated element value_dn_str")
+       },
+       {
+               .name = discard_const_p(char, "enumeration_context"),
+               .get = py_drsuapi_DsReplicaGetInfoRequest2_get_enumeration_context,
+               .set = py_drsuapi_DsReplicaGetInfoRequest2_set_enumeration_context,
+               .doc = discard_const_p(char, "PIDL-generated element enumeration_context")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaGetInfoRequest2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -20071,7 +25385,6 @@ static PyTypeObject drsuapi_DsReplicaGetInfoRequest2_Type = {
        .tp_getset = py_drsuapi_DsReplicaGetInfoRequest2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaGetInfoRequest2_new,
 };
 
@@ -20098,6 +25411,10 @@ union drsuapi_DsReplicaGetInfoRequest *py_export_drsuapi_DsReplicaGetInfoRequest
        union drsuapi_DsReplicaGetInfoRequest *ret = talloc_zero(mem_ctx, union drsuapi_DsReplicaGetInfoRequest);
        switch (level) {
                case DRSUAPI_DS_REPLICA_GET_INFO:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaGetInfoRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -20107,6 +25424,10 @@ union drsuapi_DsReplicaGetInfoRequest *py_export_drsuapi_DsReplicaGetInfoRequest
                        break;
 
                case DRSUAPI_DS_REPLICA_GET_INFO2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req2");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaGetInfoRequest2_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -20146,18 +25467,45 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_naming_context_dn(PyObject *o
 static int py_drsuapi_DsReplicaNeighbour_set_naming_context_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->naming_context_dn = NULL;
        } else {
                object->naming_context_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->naming_context_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->naming_context_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->naming_context_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->naming_context_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -20183,18 +25531,45 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_source_dsa_obj_dn(PyObject *o
 static int py_drsuapi_DsReplicaNeighbour_set_source_dsa_obj_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_obj_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_obj_dn = NULL;
        } else {
                object->source_dsa_obj_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dsa_obj_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dsa_obj_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_obj_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dsa_obj_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -20220,18 +25595,45 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_source_dsa_address(PyObject *
 static int py_drsuapi_DsReplicaNeighbour_set_source_dsa_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_address");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_address = NULL;
        } else {
                object->source_dsa_address = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dsa_address = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_address");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dsa_address = talloc_str;
+               }
        }
        return 0;
 }
@@ -20257,18 +25659,45 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_transport_obj_dn(PyObject *ob
 static int py_drsuapi_DsReplicaNeighbour_set_transport_obj_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->transport_obj_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->transport_obj_dn = NULL;
        } else {
                object->transport_obj_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->transport_obj_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->transport_obj_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->transport_obj_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->transport_obj_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -20284,6 +25713,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_replica_flags(PyObject *obj,
 static int py_drsuapi_DsReplicaNeighbour_set_replica_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->replica_flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->replica_flags));
                if (PyLong_Check(value)) {
@@ -20327,6 +25760,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_reserved(PyObject *obj, void
 static int py_drsuapi_DsReplicaNeighbour_set_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved));
                if (PyLong_Check(value)) {
@@ -20370,6 +25807,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_naming_context_obj_guid(PyObj
 static int py_drsuapi_DsReplicaNeighbour_set_naming_context_obj_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->naming_context_obj_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -20390,6 +25831,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_source_dsa_obj_guid(PyObject
 static int py_drsuapi_DsReplicaNeighbour_set_source_dsa_obj_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_obj_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -20410,6 +25855,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_source_dsa_invocation_id(PyOb
 static int py_drsuapi_DsReplicaNeighbour_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -20430,6 +25879,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_transport_obj_guid(PyObject *
 static int py_drsuapi_DsReplicaNeighbour_set_transport_obj_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->transport_obj_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -20450,6 +25903,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_tmp_highest_usn(PyObject *obj
 static int py_drsuapi_DsReplicaNeighbour_set_tmp_highest_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->tmp_highest_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->tmp_highest_usn));
                if (PyLong_Check(value)) {
@@ -20493,6 +25950,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_highest_usn(PyObject *obj, vo
 static int py_drsuapi_DsReplicaNeighbour_set_highest_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highest_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->highest_usn));
                if (PyLong_Check(value)) {
@@ -20536,6 +25997,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_last_success(PyObject *obj, v
 static int py_drsuapi_DsReplicaNeighbour_set_last_success(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->last_success");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->last_success));
                if (PyLong_Check(value)) {
@@ -20579,6 +26044,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_last_attempt(PyObject *obj, v
 static int py_drsuapi_DsReplicaNeighbour_set_last_attempt(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->last_attempt");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->last_attempt));
                if (PyLong_Check(value)) {
@@ -20622,6 +26091,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_result_last_attempt(PyObject
 static int py_drsuapi_DsReplicaNeighbour_set_result_last_attempt(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->result_last_attempt");
+               return -1;
+       }
        object->result_last_attempt = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -20637,6 +26110,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbour_get_consecutive_sync_failures(PyO
 static int py_drsuapi_DsReplicaNeighbour_set_consecutive_sync_failures(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbour *object = (struct drsuapi_DsReplicaNeighbour *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->consecutive_sync_failures");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->consecutive_sync_failures));
                if (PyLong_Check(value)) {
@@ -20670,23 +26147,103 @@ static int py_drsuapi_DsReplicaNeighbour_set_consecutive_sync_failures(PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaNeighbour_getsetters[] = {
-       { discard_const_p(char, "naming_context_dn"), py_drsuapi_DsReplicaNeighbour_get_naming_context_dn, py_drsuapi_DsReplicaNeighbour_set_naming_context_dn },
-       { discard_const_p(char, "source_dsa_obj_dn"), py_drsuapi_DsReplicaNeighbour_get_source_dsa_obj_dn, py_drsuapi_DsReplicaNeighbour_set_source_dsa_obj_dn },
-       { discard_const_p(char, "source_dsa_address"), py_drsuapi_DsReplicaNeighbour_get_source_dsa_address, py_drsuapi_DsReplicaNeighbour_set_source_dsa_address },
-       { discard_const_p(char, "transport_obj_dn"), py_drsuapi_DsReplicaNeighbour_get_transport_obj_dn, py_drsuapi_DsReplicaNeighbour_set_transport_obj_dn },
-       { discard_const_p(char, "replica_flags"), py_drsuapi_DsReplicaNeighbour_get_replica_flags, py_drsuapi_DsReplicaNeighbour_set_replica_flags },
-       { discard_const_p(char, "reserved"), py_drsuapi_DsReplicaNeighbour_get_reserved, py_drsuapi_DsReplicaNeighbour_set_reserved },
-       { discard_const_p(char, "naming_context_obj_guid"), py_drsuapi_DsReplicaNeighbour_get_naming_context_obj_guid, py_drsuapi_DsReplicaNeighbour_set_naming_context_obj_guid },
-       { discard_const_p(char, "source_dsa_obj_guid"), py_drsuapi_DsReplicaNeighbour_get_source_dsa_obj_guid, py_drsuapi_DsReplicaNeighbour_set_source_dsa_obj_guid },
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsReplicaNeighbour_get_source_dsa_invocation_id, py_drsuapi_DsReplicaNeighbour_set_source_dsa_invocation_id },
-       { discard_const_p(char, "transport_obj_guid"), py_drsuapi_DsReplicaNeighbour_get_transport_obj_guid, py_drsuapi_DsReplicaNeighbour_set_transport_obj_guid },
-       { discard_const_p(char, "tmp_highest_usn"), py_drsuapi_DsReplicaNeighbour_get_tmp_highest_usn, py_drsuapi_DsReplicaNeighbour_set_tmp_highest_usn },
-       { discard_const_p(char, "highest_usn"), py_drsuapi_DsReplicaNeighbour_get_highest_usn, py_drsuapi_DsReplicaNeighbour_set_highest_usn },
-       { discard_const_p(char, "last_success"), py_drsuapi_DsReplicaNeighbour_get_last_success, py_drsuapi_DsReplicaNeighbour_set_last_success },
-       { discard_const_p(char, "last_attempt"), py_drsuapi_DsReplicaNeighbour_get_last_attempt, py_drsuapi_DsReplicaNeighbour_set_last_attempt },
-       { discard_const_p(char, "result_last_attempt"), py_drsuapi_DsReplicaNeighbour_get_result_last_attempt, py_drsuapi_DsReplicaNeighbour_set_result_last_attempt },
-       { discard_const_p(char, "consecutive_sync_failures"), py_drsuapi_DsReplicaNeighbour_get_consecutive_sync_failures, py_drsuapi_DsReplicaNeighbour_set_consecutive_sync_failures },
-       { NULL }
+       {
+               .name = discard_const_p(char, "naming_context_dn"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_naming_context_dn,
+               .set = py_drsuapi_DsReplicaNeighbour_set_naming_context_dn,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context_dn")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_obj_dn"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_source_dsa_obj_dn,
+               .set = py_drsuapi_DsReplicaNeighbour_set_source_dsa_obj_dn,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_obj_dn")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_address"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_source_dsa_address,
+               .set = py_drsuapi_DsReplicaNeighbour_set_source_dsa_address,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_address")
+       },
+       {
+               .name = discard_const_p(char, "transport_obj_dn"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_transport_obj_dn,
+               .set = py_drsuapi_DsReplicaNeighbour_set_transport_obj_dn,
+               .doc = discard_const_p(char, "PIDL-generated element transport_obj_dn")
+       },
+       {
+               .name = discard_const_p(char, "replica_flags"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_replica_flags,
+               .set = py_drsuapi_DsReplicaNeighbour_set_replica_flags,
+               .doc = discard_const_p(char, "PIDL-generated element replica_flags")
+       },
+       {
+               .name = discard_const_p(char, "reserved"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_reserved,
+               .set = py_drsuapi_DsReplicaNeighbour_set_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element reserved")
+       },
+       {
+               .name = discard_const_p(char, "naming_context_obj_guid"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_naming_context_obj_guid,
+               .set = py_drsuapi_DsReplicaNeighbour_set_naming_context_obj_guid,
+               .doc = discard_const_p(char, "PIDL-generated element naming_context_obj_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_obj_guid"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_source_dsa_obj_guid,
+               .set = py_drsuapi_DsReplicaNeighbour_set_source_dsa_obj_guid,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_obj_guid")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsReplicaNeighbour_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "transport_obj_guid"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_transport_obj_guid,
+               .set = py_drsuapi_DsReplicaNeighbour_set_transport_obj_guid,
+               .doc = discard_const_p(char, "PIDL-generated element transport_obj_guid")
+       },
+       {
+               .name = discard_const_p(char, "tmp_highest_usn"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_tmp_highest_usn,
+               .set = py_drsuapi_DsReplicaNeighbour_set_tmp_highest_usn,
+               .doc = discard_const_p(char, "PIDL-generated element tmp_highest_usn")
+       },
+       {
+               .name = discard_const_p(char, "highest_usn"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_highest_usn,
+               .set = py_drsuapi_DsReplicaNeighbour_set_highest_usn,
+               .doc = discard_const_p(char, "PIDL-generated element highest_usn")
+       },
+       {
+               .name = discard_const_p(char, "last_success"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_last_success,
+               .set = py_drsuapi_DsReplicaNeighbour_set_last_success,
+               .doc = discard_const_p(char, "PIDL-generated element last_success")
+       },
+       {
+               .name = discard_const_p(char, "last_attempt"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_last_attempt,
+               .set = py_drsuapi_DsReplicaNeighbour_set_last_attempt,
+               .doc = discard_const_p(char, "PIDL-generated element last_attempt")
+       },
+       {
+               .name = discard_const_p(char, "result_last_attempt"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_result_last_attempt,
+               .set = py_drsuapi_DsReplicaNeighbour_set_result_last_attempt,
+               .doc = discard_const_p(char, "PIDL-generated element result_last_attempt")
+       },
+       {
+               .name = discard_const_p(char, "consecutive_sync_failures"),
+               .get = py_drsuapi_DsReplicaNeighbour_get_consecutive_sync_failures,
+               .set = py_drsuapi_DsReplicaNeighbour_set_consecutive_sync_failures,
+               .doc = discard_const_p(char, "PIDL-generated element consecutive_sync_failures")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaNeighbour_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -20701,7 +26258,6 @@ static PyTypeObject drsuapi_DsReplicaNeighbour_Type = {
        .tp_getset = py_drsuapi_DsReplicaNeighbour_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaNeighbour_new,
 };
 
@@ -20717,6 +26273,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbourCtr_get_count(PyObject *obj, void
 static int py_drsuapi_DsReplicaNeighbourCtr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbourCtr *object = (struct drsuapi_DsReplicaNeighbourCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -20760,6 +26320,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbourCtr_get_reserved(PyObject *obj, vo
 static int py_drsuapi_DsReplicaNeighbourCtr_set_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbourCtr *object = (struct drsuapi_DsReplicaNeighbourCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved));
                if (PyLong_Check(value)) {
@@ -20814,6 +26378,10 @@ static PyObject *py_drsuapi_DsReplicaNeighbourCtr_get_array(PyObject *obj, void
 static int py_drsuapi_DsReplicaNeighbourCtr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaNeighbourCtr *object = (struct drsuapi_DsReplicaNeighbourCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -20821,6 +26389,10 @@ static int py_drsuapi_DsReplicaNeighbourCtr_set_array(PyObject *py_obj, PyObject
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaNeighbour_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -20833,10 +26405,25 @@ static int py_drsuapi_DsReplicaNeighbourCtr_set_array(PyObject *py_obj, PyObject
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaNeighbourCtr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaNeighbourCtr_get_count, py_drsuapi_DsReplicaNeighbourCtr_set_count },
-       { discard_const_p(char, "reserved"), py_drsuapi_DsReplicaNeighbourCtr_get_reserved, py_drsuapi_DsReplicaNeighbourCtr_set_reserved },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaNeighbourCtr_get_array, py_drsuapi_DsReplicaNeighbourCtr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaNeighbourCtr_get_count,
+               .set = py_drsuapi_DsReplicaNeighbourCtr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved"),
+               .get = py_drsuapi_DsReplicaNeighbourCtr_get_reserved,
+               .set = py_drsuapi_DsReplicaNeighbourCtr_set_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element reserved")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaNeighbourCtr_get_array,
+               .set = py_drsuapi_DsReplicaNeighbourCtr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaNeighbourCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -20851,7 +26438,6 @@ static PyTypeObject drsuapi_DsReplicaNeighbourCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaNeighbourCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaNeighbourCtr_new,
 };
 
@@ -20867,6 +26453,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtr_get_count(PyObject *obj, void *cl
 static int py_drsuapi_DsReplicaCursorCtr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtr *object = (struct drsuapi_DsReplicaCursorCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -20910,6 +26500,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtr_get_reserved(PyObject *obj, void
 static int py_drsuapi_DsReplicaCursorCtr_set_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtr *object = (struct drsuapi_DsReplicaCursorCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved));
                if (PyLong_Check(value)) {
@@ -20964,6 +26558,10 @@ static PyObject *py_drsuapi_DsReplicaCursorCtr_get_array(PyObject *obj, void *cl
 static int py_drsuapi_DsReplicaCursorCtr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursorCtr *object = (struct drsuapi_DsReplicaCursorCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -20971,6 +26569,10 @@ static int py_drsuapi_DsReplicaCursorCtr_set_array(PyObject *py_obj, PyObject *v
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaCursor_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -20983,10 +26585,25 @@ static int py_drsuapi_DsReplicaCursorCtr_set_array(PyObject *py_obj, PyObject *v
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursorCtr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaCursorCtr_get_count, py_drsuapi_DsReplicaCursorCtr_set_count },
-       { discard_const_p(char, "reserved"), py_drsuapi_DsReplicaCursorCtr_get_reserved, py_drsuapi_DsReplicaCursorCtr_set_reserved },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaCursorCtr_get_array, py_drsuapi_DsReplicaCursorCtr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaCursorCtr_get_count,
+               .set = py_drsuapi_DsReplicaCursorCtr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved"),
+               .get = py_drsuapi_DsReplicaCursorCtr_get_reserved,
+               .set = py_drsuapi_DsReplicaCursorCtr_set_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element reserved")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaCursorCtr_get_array,
+               .set = py_drsuapi_DsReplicaCursorCtr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursorCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -21001,7 +26618,6 @@ static PyTypeObject drsuapi_DsReplicaCursorCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursorCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursorCtr_new,
 };
 
@@ -21027,18 +26643,45 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData_get_attribute_name(PyObject *ob
 static int py_drsuapi_DsReplicaObjMetaData_set_attribute_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData *object = (struct drsuapi_DsReplicaObjMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attribute_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->attribute_name = NULL;
        } else {
                object->attribute_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->attribute_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->attribute_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -21054,6 +26697,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData_get_version(PyObject *obj, void
 static int py_drsuapi_DsReplicaObjMetaData_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData *object = (struct drsuapi_DsReplicaObjMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -21097,6 +26744,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData_get_originating_change_time(PyO
 static int py_drsuapi_DsReplicaObjMetaData_set_originating_change_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData *object = (struct drsuapi_DsReplicaObjMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_change_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_change_time));
                if (PyLong_Check(value)) {
@@ -21140,6 +26791,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData_get_originating_invocation_id(P
 static int py_drsuapi_DsReplicaObjMetaData_set_originating_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData *object = (struct drsuapi_DsReplicaObjMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -21160,6 +26815,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData_get_originating_usn(PyObject *o
 static int py_drsuapi_DsReplicaObjMetaData_set_originating_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData *object = (struct drsuapi_DsReplicaObjMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_usn));
                if (PyLong_Check(value)) {
@@ -21203,6 +26862,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData_get_local_usn(PyObject *obj, vo
 static int py_drsuapi_DsReplicaObjMetaData_set_local_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData *object = (struct drsuapi_DsReplicaObjMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->local_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->local_usn));
                if (PyLong_Check(value)) {
@@ -21236,13 +26899,43 @@ static int py_drsuapi_DsReplicaObjMetaData_set_local_usn(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjMetaData_getsetters[] = {
-       { discard_const_p(char, "attribute_name"), py_drsuapi_DsReplicaObjMetaData_get_attribute_name, py_drsuapi_DsReplicaObjMetaData_set_attribute_name },
-       { discard_const_p(char, "version"), py_drsuapi_DsReplicaObjMetaData_get_version, py_drsuapi_DsReplicaObjMetaData_set_version },
-       { discard_const_p(char, "originating_change_time"), py_drsuapi_DsReplicaObjMetaData_get_originating_change_time, py_drsuapi_DsReplicaObjMetaData_set_originating_change_time },
-       { discard_const_p(char, "originating_invocation_id"), py_drsuapi_DsReplicaObjMetaData_get_originating_invocation_id, py_drsuapi_DsReplicaObjMetaData_set_originating_invocation_id },
-       { discard_const_p(char, "originating_usn"), py_drsuapi_DsReplicaObjMetaData_get_originating_usn, py_drsuapi_DsReplicaObjMetaData_set_originating_usn },
-       { discard_const_p(char, "local_usn"), py_drsuapi_DsReplicaObjMetaData_get_local_usn, py_drsuapi_DsReplicaObjMetaData_set_local_usn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "attribute_name"),
+               .get = py_drsuapi_DsReplicaObjMetaData_get_attribute_name,
+               .set = py_drsuapi_DsReplicaObjMetaData_set_attribute_name,
+               .doc = discard_const_p(char, "PIDL-generated element attribute_name")
+       },
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsReplicaObjMetaData_get_version,
+               .set = py_drsuapi_DsReplicaObjMetaData_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "originating_change_time"),
+               .get = py_drsuapi_DsReplicaObjMetaData_get_originating_change_time,
+               .set = py_drsuapi_DsReplicaObjMetaData_set_originating_change_time,
+               .doc = discard_const_p(char, "PIDL-generated element originating_change_time")
+       },
+       {
+               .name = discard_const_p(char, "originating_invocation_id"),
+               .get = py_drsuapi_DsReplicaObjMetaData_get_originating_invocation_id,
+               .set = py_drsuapi_DsReplicaObjMetaData_set_originating_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element originating_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "originating_usn"),
+               .get = py_drsuapi_DsReplicaObjMetaData_get_originating_usn,
+               .set = py_drsuapi_DsReplicaObjMetaData_set_originating_usn,
+               .doc = discard_const_p(char, "PIDL-generated element originating_usn")
+       },
+       {
+               .name = discard_const_p(char, "local_usn"),
+               .get = py_drsuapi_DsReplicaObjMetaData_get_local_usn,
+               .set = py_drsuapi_DsReplicaObjMetaData_set_local_usn,
+               .doc = discard_const_p(char, "PIDL-generated element local_usn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjMetaData_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -21257,7 +26950,6 @@ static PyTypeObject drsuapi_DsReplicaObjMetaData_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjMetaData_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjMetaData_new,
 };
 
@@ -21273,6 +26965,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaDataCtr_get_count(PyObject *obj, voi
 static int py_drsuapi_DsReplicaObjMetaDataCtr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaDataCtr *object = (struct drsuapi_DsReplicaObjMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -21316,6 +27012,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaDataCtr_get_reserved(PyObject *obj,
 static int py_drsuapi_DsReplicaObjMetaDataCtr_set_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaDataCtr *object = (struct drsuapi_DsReplicaObjMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved));
                if (PyLong_Check(value)) {
@@ -21370,6 +27070,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaDataCtr_get_array(PyObject *obj, voi
 static int py_drsuapi_DsReplicaObjMetaDataCtr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaDataCtr *object = (struct drsuapi_DsReplicaObjMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -21377,6 +27081,10 @@ static int py_drsuapi_DsReplicaObjMetaDataCtr_set_array(PyObject *py_obj, PyObje
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaObjMetaData_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -21389,10 +27097,25 @@ static int py_drsuapi_DsReplicaObjMetaDataCtr_set_array(PyObject *py_obj, PyObje
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjMetaDataCtr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaObjMetaDataCtr_get_count, py_drsuapi_DsReplicaObjMetaDataCtr_set_count },
-       { discard_const_p(char, "reserved"), py_drsuapi_DsReplicaObjMetaDataCtr_get_reserved, py_drsuapi_DsReplicaObjMetaDataCtr_set_reserved },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaObjMetaDataCtr_get_array, py_drsuapi_DsReplicaObjMetaDataCtr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaObjMetaDataCtr_get_count,
+               .set = py_drsuapi_DsReplicaObjMetaDataCtr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved"),
+               .get = py_drsuapi_DsReplicaObjMetaDataCtr_get_reserved,
+               .set = py_drsuapi_DsReplicaObjMetaDataCtr_set_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element reserved")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaObjMetaDataCtr_get_array,
+               .set = py_drsuapi_DsReplicaObjMetaDataCtr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjMetaDataCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -21407,7 +27130,6 @@ static PyTypeObject drsuapi_DsReplicaObjMetaDataCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjMetaDataCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjMetaDataCtr_new,
 };
 
@@ -21433,18 +27155,45 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailure_get_dsa_obj_dn(PyObject *obj,
 static int py_drsuapi_DsReplicaKccDsaFailure_set_dsa_obj_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailure *object = (struct drsuapi_DsReplicaKccDsaFailure *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dsa_obj_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->dsa_obj_dn = NULL;
        } else {
                object->dsa_obj_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->dsa_obj_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->dsa_obj_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->dsa_obj_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->dsa_obj_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -21460,6 +27209,10 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailure_get_dsa_obj_guid(PyObject *ob
 static int py_drsuapi_DsReplicaKccDsaFailure_set_dsa_obj_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailure *object = (struct drsuapi_DsReplicaKccDsaFailure *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dsa_obj_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -21480,6 +27233,10 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailure_get_first_failure(PyObject *o
 static int py_drsuapi_DsReplicaKccDsaFailure_set_first_failure(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailure *object = (struct drsuapi_DsReplicaKccDsaFailure *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->first_failure");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->first_failure));
                if (PyLong_Check(value)) {
@@ -21523,6 +27280,10 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailure_get_num_failures(PyObject *ob
 static int py_drsuapi_DsReplicaKccDsaFailure_set_num_failures(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailure *object = (struct drsuapi_DsReplicaKccDsaFailure *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_failures");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_failures));
                if (PyLong_Check(value)) {
@@ -21566,17 +27327,46 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailure_get_last_result(PyObject *obj
 static int py_drsuapi_DsReplicaKccDsaFailure_set_last_result(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailure *object = (struct drsuapi_DsReplicaKccDsaFailure *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->last_result");
+               return -1;
+       }
        object->last_result = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaKccDsaFailure_getsetters[] = {
-       { discard_const_p(char, "dsa_obj_dn"), py_drsuapi_DsReplicaKccDsaFailure_get_dsa_obj_dn, py_drsuapi_DsReplicaKccDsaFailure_set_dsa_obj_dn },
-       { discard_const_p(char, "dsa_obj_guid"), py_drsuapi_DsReplicaKccDsaFailure_get_dsa_obj_guid, py_drsuapi_DsReplicaKccDsaFailure_set_dsa_obj_guid },
-       { discard_const_p(char, "first_failure"), py_drsuapi_DsReplicaKccDsaFailure_get_first_failure, py_drsuapi_DsReplicaKccDsaFailure_set_first_failure },
-       { discard_const_p(char, "num_failures"), py_drsuapi_DsReplicaKccDsaFailure_get_num_failures, py_drsuapi_DsReplicaKccDsaFailure_set_num_failures },
-       { discard_const_p(char, "last_result"), py_drsuapi_DsReplicaKccDsaFailure_get_last_result, py_drsuapi_DsReplicaKccDsaFailure_set_last_result },
-       { NULL }
+       {
+               .name = discard_const_p(char, "dsa_obj_dn"),
+               .get = py_drsuapi_DsReplicaKccDsaFailure_get_dsa_obj_dn,
+               .set = py_drsuapi_DsReplicaKccDsaFailure_set_dsa_obj_dn,
+               .doc = discard_const_p(char, "PIDL-generated element dsa_obj_dn")
+       },
+       {
+               .name = discard_const_p(char, "dsa_obj_guid"),
+               .get = py_drsuapi_DsReplicaKccDsaFailure_get_dsa_obj_guid,
+               .set = py_drsuapi_DsReplicaKccDsaFailure_set_dsa_obj_guid,
+               .doc = discard_const_p(char, "PIDL-generated element dsa_obj_guid")
+       },
+       {
+               .name = discard_const_p(char, "first_failure"),
+               .get = py_drsuapi_DsReplicaKccDsaFailure_get_first_failure,
+               .set = py_drsuapi_DsReplicaKccDsaFailure_set_first_failure,
+               .doc = discard_const_p(char, "PIDL-generated element first_failure")
+       },
+       {
+               .name = discard_const_p(char, "num_failures"),
+               .get = py_drsuapi_DsReplicaKccDsaFailure_get_num_failures,
+               .set = py_drsuapi_DsReplicaKccDsaFailure_set_num_failures,
+               .doc = discard_const_p(char, "PIDL-generated element num_failures")
+       },
+       {
+               .name = discard_const_p(char, "last_result"),
+               .get = py_drsuapi_DsReplicaKccDsaFailure_get_last_result,
+               .set = py_drsuapi_DsReplicaKccDsaFailure_set_last_result,
+               .doc = discard_const_p(char, "PIDL-generated element last_result")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaKccDsaFailure_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -21591,7 +27381,6 @@ static PyTypeObject drsuapi_DsReplicaKccDsaFailure_Type = {
        .tp_getset = py_drsuapi_DsReplicaKccDsaFailure_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaKccDsaFailure_new,
 };
 
@@ -21607,6 +27396,10 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailuresCtr_get_count(PyObject *obj,
 static int py_drsuapi_DsReplicaKccDsaFailuresCtr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailuresCtr *object = (struct drsuapi_DsReplicaKccDsaFailuresCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -21650,6 +27443,10 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailuresCtr_get_reserved(PyObject *ob
 static int py_drsuapi_DsReplicaKccDsaFailuresCtr_set_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailuresCtr *object = (struct drsuapi_DsReplicaKccDsaFailuresCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved));
                if (PyLong_Check(value)) {
@@ -21704,6 +27501,10 @@ static PyObject *py_drsuapi_DsReplicaKccDsaFailuresCtr_get_array(PyObject *obj,
 static int py_drsuapi_DsReplicaKccDsaFailuresCtr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaKccDsaFailuresCtr *object = (struct drsuapi_DsReplicaKccDsaFailuresCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -21711,6 +27512,10 @@ static int py_drsuapi_DsReplicaKccDsaFailuresCtr_set_array(PyObject *py_obj, PyO
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaKccDsaFailure_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -21723,10 +27528,25 @@ static int py_drsuapi_DsReplicaKccDsaFailuresCtr_set_array(PyObject *py_obj, PyO
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaKccDsaFailuresCtr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaKccDsaFailuresCtr_get_count, py_drsuapi_DsReplicaKccDsaFailuresCtr_set_count },
-       { discard_const_p(char, "reserved"), py_drsuapi_DsReplicaKccDsaFailuresCtr_get_reserved, py_drsuapi_DsReplicaKccDsaFailuresCtr_set_reserved },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaKccDsaFailuresCtr_get_array, py_drsuapi_DsReplicaKccDsaFailuresCtr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaKccDsaFailuresCtr_get_count,
+               .set = py_drsuapi_DsReplicaKccDsaFailuresCtr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved"),
+               .get = py_drsuapi_DsReplicaKccDsaFailuresCtr_get_reserved,
+               .set = py_drsuapi_DsReplicaKccDsaFailuresCtr_set_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element reserved")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaKccDsaFailuresCtr_get_array,
+               .set = py_drsuapi_DsReplicaKccDsaFailuresCtr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaKccDsaFailuresCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -21741,7 +27561,6 @@ static PyTypeObject drsuapi_DsReplicaKccDsaFailuresCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaKccDsaFailuresCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaKccDsaFailuresCtr_new,
 };
 
@@ -21757,6 +27576,10 @@ static PyObject *py_drsuapi_DsReplicaOp_get_operation_start(PyObject *obj, void
 static int py_drsuapi_DsReplicaOp_set_operation_start(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->operation_start");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->operation_start));
                if (PyLong_Check(value)) {
@@ -21800,6 +27623,10 @@ static PyObject *py_drsuapi_DsReplicaOp_get_serial_num(PyObject *obj, void *clos
 static int py_drsuapi_DsReplicaOp_set_serial_num(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->serial_num");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->serial_num));
                if (PyLong_Check(value)) {
@@ -21843,6 +27670,10 @@ static PyObject *py_drsuapi_DsReplicaOp_get_priority(PyObject *obj, void *closur
 static int py_drsuapi_DsReplicaOp_set_priority(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->priority");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->priority));
                if (PyLong_Check(value)) {
@@ -21886,6 +27717,10 @@ static PyObject *py_drsuapi_DsReplicaOp_get_operation_type(PyObject *obj, void *
 static int py_drsuapi_DsReplicaOp_set_operation_type(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->operation_type");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->operation_type));
                if (PyLong_Check(value)) {
@@ -21929,6 +27764,10 @@ static PyObject *py_drsuapi_DsReplicaOp_get_options(PyObject *obj, void *closure
 static int py_drsuapi_DsReplicaOp_set_options(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->options");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->options));
                if (PyLong_Check(value)) {
@@ -21982,18 +27821,45 @@ static PyObject *py_drsuapi_DsReplicaOp_get_nc_dn(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplicaOp_set_nc_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->nc_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->nc_dn = NULL;
        } else {
                object->nc_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->nc_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->nc_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->nc_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->nc_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -22019,18 +27885,45 @@ static PyObject *py_drsuapi_DsReplicaOp_get_remote_dsa_obj_dn(PyObject *obj, voi
 static int py_drsuapi_DsReplicaOp_set_remote_dsa_obj_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->remote_dsa_obj_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->remote_dsa_obj_dn = NULL;
        } else {
                object->remote_dsa_obj_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->remote_dsa_obj_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->remote_dsa_obj_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->remote_dsa_obj_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->remote_dsa_obj_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -22056,18 +27949,45 @@ static PyObject *py_drsuapi_DsReplicaOp_get_remote_dsa_address(PyObject *obj, vo
 static int py_drsuapi_DsReplicaOp_set_remote_dsa_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->remote_dsa_address");
+               return -1;
+       }
        if (value == Py_None) {
                object->remote_dsa_address = NULL;
        } else {
                object->remote_dsa_address = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->remote_dsa_address = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->remote_dsa_address = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->remote_dsa_address");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->remote_dsa_address = talloc_str;
+               }
        }
        return 0;
 }
@@ -22083,6 +28003,10 @@ static PyObject *py_drsuapi_DsReplicaOp_get_nc_obj_guid(PyObject *obj, void *clo
 static int py_drsuapi_DsReplicaOp_set_nc_obj_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->nc_obj_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -22103,6 +28027,10 @@ static PyObject *py_drsuapi_DsReplicaOp_get_remote_dsa_obj_guid(PyObject *obj, v
 static int py_drsuapi_DsReplicaOp_set_remote_dsa_obj_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOp *object = (struct drsuapi_DsReplicaOp *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->remote_dsa_obj_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -22113,17 +28041,67 @@ static int py_drsuapi_DsReplicaOp_set_remote_dsa_obj_guid(PyObject *py_obj, PyOb
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaOp_getsetters[] = {
-       { discard_const_p(char, "operation_start"), py_drsuapi_DsReplicaOp_get_operation_start, py_drsuapi_DsReplicaOp_set_operation_start },
-       { discard_const_p(char, "serial_num"), py_drsuapi_DsReplicaOp_get_serial_num, py_drsuapi_DsReplicaOp_set_serial_num },
-       { discard_const_p(char, "priority"), py_drsuapi_DsReplicaOp_get_priority, py_drsuapi_DsReplicaOp_set_priority },
-       { discard_const_p(char, "operation_type"), py_drsuapi_DsReplicaOp_get_operation_type, py_drsuapi_DsReplicaOp_set_operation_type },
-       { discard_const_p(char, "options"), py_drsuapi_DsReplicaOp_get_options, py_drsuapi_DsReplicaOp_set_options },
-       { discard_const_p(char, "nc_dn"), py_drsuapi_DsReplicaOp_get_nc_dn, py_drsuapi_DsReplicaOp_set_nc_dn },
-       { discard_const_p(char, "remote_dsa_obj_dn"), py_drsuapi_DsReplicaOp_get_remote_dsa_obj_dn, py_drsuapi_DsReplicaOp_set_remote_dsa_obj_dn },
-       { discard_const_p(char, "remote_dsa_address"), py_drsuapi_DsReplicaOp_get_remote_dsa_address, py_drsuapi_DsReplicaOp_set_remote_dsa_address },
-       { discard_const_p(char, "nc_obj_guid"), py_drsuapi_DsReplicaOp_get_nc_obj_guid, py_drsuapi_DsReplicaOp_set_nc_obj_guid },
-       { discard_const_p(char, "remote_dsa_obj_guid"), py_drsuapi_DsReplicaOp_get_remote_dsa_obj_guid, py_drsuapi_DsReplicaOp_set_remote_dsa_obj_guid },
-       { NULL }
+       {
+               .name = discard_const_p(char, "operation_start"),
+               .get = py_drsuapi_DsReplicaOp_get_operation_start,
+               .set = py_drsuapi_DsReplicaOp_set_operation_start,
+               .doc = discard_const_p(char, "PIDL-generated element operation_start")
+       },
+       {
+               .name = discard_const_p(char, "serial_num"),
+               .get = py_drsuapi_DsReplicaOp_get_serial_num,
+               .set = py_drsuapi_DsReplicaOp_set_serial_num,
+               .doc = discard_const_p(char, "PIDL-generated element serial_num")
+       },
+       {
+               .name = discard_const_p(char, "priority"),
+               .get = py_drsuapi_DsReplicaOp_get_priority,
+               .set = py_drsuapi_DsReplicaOp_set_priority,
+               .doc = discard_const_p(char, "PIDL-generated element priority")
+       },
+       {
+               .name = discard_const_p(char, "operation_type"),
+               .get = py_drsuapi_DsReplicaOp_get_operation_type,
+               .set = py_drsuapi_DsReplicaOp_set_operation_type,
+               .doc = discard_const_p(char, "PIDL-generated element operation_type")
+       },
+       {
+               .name = discard_const_p(char, "options"),
+               .get = py_drsuapi_DsReplicaOp_get_options,
+               .set = py_drsuapi_DsReplicaOp_set_options,
+               .doc = discard_const_p(char, "PIDL-generated element options")
+       },
+       {
+               .name = discard_const_p(char, "nc_dn"),
+               .get = py_drsuapi_DsReplicaOp_get_nc_dn,
+               .set = py_drsuapi_DsReplicaOp_set_nc_dn,
+               .doc = discard_const_p(char, "PIDL-generated element nc_dn")
+       },
+       {
+               .name = discard_const_p(char, "remote_dsa_obj_dn"),
+               .get = py_drsuapi_DsReplicaOp_get_remote_dsa_obj_dn,
+               .set = py_drsuapi_DsReplicaOp_set_remote_dsa_obj_dn,
+               .doc = discard_const_p(char, "PIDL-generated element remote_dsa_obj_dn")
+       },
+       {
+               .name = discard_const_p(char, "remote_dsa_address"),
+               .get = py_drsuapi_DsReplicaOp_get_remote_dsa_address,
+               .set = py_drsuapi_DsReplicaOp_set_remote_dsa_address,
+               .doc = discard_const_p(char, "PIDL-generated element remote_dsa_address")
+       },
+       {
+               .name = discard_const_p(char, "nc_obj_guid"),
+               .get = py_drsuapi_DsReplicaOp_get_nc_obj_guid,
+               .set = py_drsuapi_DsReplicaOp_set_nc_obj_guid,
+               .doc = discard_const_p(char, "PIDL-generated element nc_obj_guid")
+       },
+       {
+               .name = discard_const_p(char, "remote_dsa_obj_guid"),
+               .get = py_drsuapi_DsReplicaOp_get_remote_dsa_obj_guid,
+               .set = py_drsuapi_DsReplicaOp_set_remote_dsa_obj_guid,
+               .doc = discard_const_p(char, "PIDL-generated element remote_dsa_obj_guid")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaOp_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -22138,7 +28116,6 @@ static PyTypeObject drsuapi_DsReplicaOp_Type = {
        .tp_getset = py_drsuapi_DsReplicaOp_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaOp_new,
 };
 
@@ -22154,6 +28131,10 @@ static PyObject *py_drsuapi_DsReplicaOpCtr_get_time(PyObject *obj, void *closure
 static int py_drsuapi_DsReplicaOpCtr_set_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOpCtr *object = (struct drsuapi_DsReplicaOpCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->time));
                if (PyLong_Check(value)) {
@@ -22197,6 +28178,10 @@ static PyObject *py_drsuapi_DsReplicaOpCtr_get_count(PyObject *obj, void *closur
 static int py_drsuapi_DsReplicaOpCtr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOpCtr *object = (struct drsuapi_DsReplicaOpCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -22251,6 +28236,10 @@ static PyObject *py_drsuapi_DsReplicaOpCtr_get_array(PyObject *obj, void *closur
 static int py_drsuapi_DsReplicaOpCtr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaOpCtr *object = (struct drsuapi_DsReplicaOpCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -22258,6 +28247,10 @@ static int py_drsuapi_DsReplicaOpCtr_set_array(PyObject *py_obj, PyObject *value
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaOp_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -22270,10 +28263,25 @@ static int py_drsuapi_DsReplicaOpCtr_set_array(PyObject *py_obj, PyObject *value
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaOpCtr_getsetters[] = {
-       { discard_const_p(char, "time"), py_drsuapi_DsReplicaOpCtr_get_time, py_drsuapi_DsReplicaOpCtr_set_time },
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaOpCtr_get_count, py_drsuapi_DsReplicaOpCtr_set_count },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaOpCtr_get_array, py_drsuapi_DsReplicaOpCtr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "time"),
+               .get = py_drsuapi_DsReplicaOpCtr_get_time,
+               .set = py_drsuapi_DsReplicaOpCtr_set_time,
+               .doc = discard_const_p(char, "PIDL-generated element time")
+       },
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaOpCtr_get_count,
+               .set = py_drsuapi_DsReplicaOpCtr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaOpCtr_get_array,
+               .set = py_drsuapi_DsReplicaOpCtr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaOpCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -22288,7 +28296,6 @@ static PyTypeObject drsuapi_DsReplicaOpCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaOpCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaOpCtr_new,
 };
 
@@ -22314,18 +28321,45 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_attribute_name(PyObject
 static int py_drsuapi_DsReplicaAttrValMetaData_set_attribute_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attribute_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->attribute_name = NULL;
        } else {
                object->attribute_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->attribute_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->attribute_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -22351,18 +28385,45 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_object_dn(PyObject *obj
 static int py_drsuapi_DsReplicaAttrValMetaData_set_object_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->object_dn = NULL;
        } else {
                object->object_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->object_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->object_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -22378,6 +28439,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get___ndr_size_binary(PyObj
 static int py_drsuapi_DsReplicaAttrValMetaData_set___ndr_size_binary(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_binary");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_binary));
                if (PyLong_Check(value)) {
@@ -22427,10 +28492,18 @@ static int py_drsuapi_DsReplicaAttrValMetaData_set_binary(PyObject *py_obj, PyOb
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->binary));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->binary");
+               return -1;
+       }
        if (value == Py_None) {
                object->binary = NULL;
        } else {
                object->binary = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->binary);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->binary");
+                       return -1;
+               }
                *object->binary = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
        }
        return 0;
@@ -22447,6 +28520,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_deleted(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaData_set_deleted(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->deleted");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->deleted));
                if (PyLong_Check(value)) {
@@ -22490,6 +28567,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_created(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaData_set_created(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->created");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->created));
                if (PyLong_Check(value)) {
@@ -22533,6 +28614,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_version(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaData_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -22576,6 +28661,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_originating_change_time
 static int py_drsuapi_DsReplicaAttrValMetaData_set_originating_change_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_change_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_change_time));
                if (PyLong_Check(value)) {
@@ -22619,6 +28708,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_originating_invocation_
 static int py_drsuapi_DsReplicaAttrValMetaData_set_originating_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -22639,6 +28732,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_originating_usn(PyObjec
 static int py_drsuapi_DsReplicaAttrValMetaData_set_originating_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_usn));
                if (PyLong_Check(value)) {
@@ -22682,6 +28779,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData_get_local_usn(PyObject *obj
 static int py_drsuapi_DsReplicaAttrValMetaData_set_local_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData *object = (struct drsuapi_DsReplicaAttrValMetaData *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->local_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->local_usn));
                if (PyLong_Check(value)) {
@@ -22715,18 +28816,73 @@ static int py_drsuapi_DsReplicaAttrValMetaData_set_local_usn(PyObject *py_obj, P
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAttrValMetaData_getsetters[] = {
-       { discard_const_p(char, "attribute_name"), py_drsuapi_DsReplicaAttrValMetaData_get_attribute_name, py_drsuapi_DsReplicaAttrValMetaData_set_attribute_name },
-       { discard_const_p(char, "object_dn"), py_drsuapi_DsReplicaAttrValMetaData_get_object_dn, py_drsuapi_DsReplicaAttrValMetaData_set_object_dn },
-       { discard_const_p(char, "__ndr_size_binary"), py_drsuapi_DsReplicaAttrValMetaData_get___ndr_size_binary, py_drsuapi_DsReplicaAttrValMetaData_set___ndr_size_binary },
-       { discard_const_p(char, "binary"), py_drsuapi_DsReplicaAttrValMetaData_get_binary, py_drsuapi_DsReplicaAttrValMetaData_set_binary },
-       { discard_const_p(char, "deleted"), py_drsuapi_DsReplicaAttrValMetaData_get_deleted, py_drsuapi_DsReplicaAttrValMetaData_set_deleted },
-       { discard_const_p(char, "created"), py_drsuapi_DsReplicaAttrValMetaData_get_created, py_drsuapi_DsReplicaAttrValMetaData_set_created },
-       { discard_const_p(char, "version"), py_drsuapi_DsReplicaAttrValMetaData_get_version, py_drsuapi_DsReplicaAttrValMetaData_set_version },
-       { discard_const_p(char, "originating_change_time"), py_drsuapi_DsReplicaAttrValMetaData_get_originating_change_time, py_drsuapi_DsReplicaAttrValMetaData_set_originating_change_time },
-       { discard_const_p(char, "originating_invocation_id"), py_drsuapi_DsReplicaAttrValMetaData_get_originating_invocation_id, py_drsuapi_DsReplicaAttrValMetaData_set_originating_invocation_id },
-       { discard_const_p(char, "originating_usn"), py_drsuapi_DsReplicaAttrValMetaData_get_originating_usn, py_drsuapi_DsReplicaAttrValMetaData_set_originating_usn },
-       { discard_const_p(char, "local_usn"), py_drsuapi_DsReplicaAttrValMetaData_get_local_usn, py_drsuapi_DsReplicaAttrValMetaData_set_local_usn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "attribute_name"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_attribute_name,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_attribute_name,
+               .doc = discard_const_p(char, "PIDL-generated element attribute_name")
+       },
+       {
+               .name = discard_const_p(char, "object_dn"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_object_dn,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_object_dn,
+               .doc = discard_const_p(char, "PIDL-generated element object_dn")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_binary"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get___ndr_size_binary,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set___ndr_size_binary,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_binary")
+       },
+       {
+               .name = discard_const_p(char, "binary"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_binary,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_binary,
+               .doc = discard_const_p(char, "PIDL-generated element binary")
+       },
+       {
+               .name = discard_const_p(char, "deleted"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_deleted,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_deleted,
+               .doc = discard_const_p(char, "PIDL-generated element deleted")
+       },
+       {
+               .name = discard_const_p(char, "created"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_created,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_created,
+               .doc = discard_const_p(char, "PIDL-generated element created")
+       },
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_version,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "originating_change_time"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_originating_change_time,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_originating_change_time,
+               .doc = discard_const_p(char, "PIDL-generated element originating_change_time")
+       },
+       {
+               .name = discard_const_p(char, "originating_invocation_id"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_originating_invocation_id,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_originating_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element originating_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "originating_usn"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_originating_usn,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_originating_usn,
+               .doc = discard_const_p(char, "PIDL-generated element originating_usn")
+       },
+       {
+               .name = discard_const_p(char, "local_usn"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData_get_local_usn,
+               .set = py_drsuapi_DsReplicaAttrValMetaData_set_local_usn,
+               .doc = discard_const_p(char, "PIDL-generated element local_usn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAttrValMetaData_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -22741,7 +28897,6 @@ static PyTypeObject drsuapi_DsReplicaAttrValMetaData_Type = {
        .tp_getset = py_drsuapi_DsReplicaAttrValMetaData_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAttrValMetaData_new,
 };
 
@@ -22757,6 +28912,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaDataCtr_get_count(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaDataCtr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaDataCtr *object = (struct drsuapi_DsReplicaAttrValMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -22800,6 +28959,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaDataCtr_get_enumeration_context(
 static int py_drsuapi_DsReplicaAttrValMetaDataCtr_set_enumeration_context(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaDataCtr *object = (struct drsuapi_DsReplicaAttrValMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->enumeration_context");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->enumeration_context));
                if (PyLong_Check(value)) {
@@ -22854,6 +29017,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaDataCtr_get_array(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaDataCtr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaDataCtr *object = (struct drsuapi_DsReplicaAttrValMetaDataCtr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -22861,6 +29028,10 @@ static int py_drsuapi_DsReplicaAttrValMetaDataCtr_set_array(PyObject *py_obj, Py
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaAttrValMetaData_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -22873,10 +29044,25 @@ static int py_drsuapi_DsReplicaAttrValMetaDataCtr_set_array(PyObject *py_obj, Py
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAttrValMetaDataCtr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaAttrValMetaDataCtr_get_count, py_drsuapi_DsReplicaAttrValMetaDataCtr_set_count },
-       { discard_const_p(char, "enumeration_context"), py_drsuapi_DsReplicaAttrValMetaDataCtr_get_enumeration_context, py_drsuapi_DsReplicaAttrValMetaDataCtr_set_enumeration_context },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaAttrValMetaDataCtr_get_array, py_drsuapi_DsReplicaAttrValMetaDataCtr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaAttrValMetaDataCtr_get_count,
+               .set = py_drsuapi_DsReplicaAttrValMetaDataCtr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "enumeration_context"),
+               .get = py_drsuapi_DsReplicaAttrValMetaDataCtr_get_enumeration_context,
+               .set = py_drsuapi_DsReplicaAttrValMetaDataCtr_set_enumeration_context,
+               .doc = discard_const_p(char, "PIDL-generated element enumeration_context")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaAttrValMetaDataCtr_get_array,
+               .set = py_drsuapi_DsReplicaAttrValMetaDataCtr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAttrValMetaDataCtr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -22891,7 +29077,6 @@ static PyTypeObject drsuapi_DsReplicaAttrValMetaDataCtr_Type = {
        .tp_getset = py_drsuapi_DsReplicaAttrValMetaDataCtr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAttrValMetaDataCtr_new,
 };
 
@@ -22907,6 +29092,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2Ctr_get_count(PyObject *obj, void *c
 static int py_drsuapi_DsReplicaCursor2Ctr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2Ctr *object = (struct drsuapi_DsReplicaCursor2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -22950,6 +29139,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2Ctr_get_enumeration_context(PyObject
 static int py_drsuapi_DsReplicaCursor2Ctr_set_enumeration_context(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2Ctr *object = (struct drsuapi_DsReplicaCursor2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->enumeration_context");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->enumeration_context));
                if (PyLong_Check(value)) {
@@ -23004,6 +29197,10 @@ static PyObject *py_drsuapi_DsReplicaCursor2Ctr_get_array(PyObject *obj, void *c
 static int py_drsuapi_DsReplicaCursor2Ctr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor2Ctr *object = (struct drsuapi_DsReplicaCursor2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -23011,6 +29208,10 @@ static int py_drsuapi_DsReplicaCursor2Ctr_set_array(PyObject *py_obj, PyObject *
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaCursor2_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -23023,10 +29224,25 @@ static int py_drsuapi_DsReplicaCursor2Ctr_set_array(PyObject *py_obj, PyObject *
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursor2Ctr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaCursor2Ctr_get_count, py_drsuapi_DsReplicaCursor2Ctr_set_count },
-       { discard_const_p(char, "enumeration_context"), py_drsuapi_DsReplicaCursor2Ctr_get_enumeration_context, py_drsuapi_DsReplicaCursor2Ctr_set_enumeration_context },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaCursor2Ctr_get_array, py_drsuapi_DsReplicaCursor2Ctr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaCursor2Ctr_get_count,
+               .set = py_drsuapi_DsReplicaCursor2Ctr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "enumeration_context"),
+               .get = py_drsuapi_DsReplicaCursor2Ctr_get_enumeration_context,
+               .set = py_drsuapi_DsReplicaCursor2Ctr_set_enumeration_context,
+               .doc = discard_const_p(char, "PIDL-generated element enumeration_context")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaCursor2Ctr_get_array,
+               .set = py_drsuapi_DsReplicaCursor2Ctr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursor2Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -23041,7 +29257,6 @@ static PyTypeObject drsuapi_DsReplicaCursor2Ctr_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursor2Ctr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursor2Ctr_new,
 };
 
@@ -23057,6 +29272,10 @@ static PyObject *py_drsuapi_DsReplicaCursor3_get_source_dsa_invocation_id(PyObje
 static int py_drsuapi_DsReplicaCursor3_set_source_dsa_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor3 *object = (struct drsuapi_DsReplicaCursor3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -23077,6 +29296,10 @@ static PyObject *py_drsuapi_DsReplicaCursor3_get_highest_usn(PyObject *obj, void
 static int py_drsuapi_DsReplicaCursor3_set_highest_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor3 *object = (struct drsuapi_DsReplicaCursor3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->highest_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->highest_usn));
                if (PyLong_Check(value)) {
@@ -23120,6 +29343,10 @@ static PyObject *py_drsuapi_DsReplicaCursor3_get_last_sync_success(PyObject *obj
 static int py_drsuapi_DsReplicaCursor3_set_last_sync_success(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor3 *object = (struct drsuapi_DsReplicaCursor3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->last_sync_success");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->last_sync_success));
                if (PyLong_Check(value)) {
@@ -23173,28 +29400,75 @@ static PyObject *py_drsuapi_DsReplicaCursor3_get_source_dsa_obj_dn(PyObject *obj
 static int py_drsuapi_DsReplicaCursor3_set_source_dsa_obj_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor3 *object = (struct drsuapi_DsReplicaCursor3 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->source_dsa_obj_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->source_dsa_obj_dn = NULL;
        } else {
                object->source_dsa_obj_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->source_dsa_obj_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->source_dsa_obj_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->source_dsa_obj_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->source_dsa_obj_dn = talloc_str;
+               }
        }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursor3_getsetters[] = {
-       { discard_const_p(char, "source_dsa_invocation_id"), py_drsuapi_DsReplicaCursor3_get_source_dsa_invocation_id, py_drsuapi_DsReplicaCursor3_set_source_dsa_invocation_id },
-       { discard_const_p(char, "highest_usn"), py_drsuapi_DsReplicaCursor3_get_highest_usn, py_drsuapi_DsReplicaCursor3_set_highest_usn },
-       { discard_const_p(char, "last_sync_success"), py_drsuapi_DsReplicaCursor3_get_last_sync_success, py_drsuapi_DsReplicaCursor3_set_last_sync_success },
-       { discard_const_p(char, "source_dsa_obj_dn"), py_drsuapi_DsReplicaCursor3_get_source_dsa_obj_dn, py_drsuapi_DsReplicaCursor3_set_source_dsa_obj_dn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "source_dsa_invocation_id"),
+               .get = py_drsuapi_DsReplicaCursor3_get_source_dsa_invocation_id,
+               .set = py_drsuapi_DsReplicaCursor3_set_source_dsa_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "highest_usn"),
+               .get = py_drsuapi_DsReplicaCursor3_get_highest_usn,
+               .set = py_drsuapi_DsReplicaCursor3_set_highest_usn,
+               .doc = discard_const_p(char, "PIDL-generated element highest_usn")
+       },
+       {
+               .name = discard_const_p(char, "last_sync_success"),
+               .get = py_drsuapi_DsReplicaCursor3_get_last_sync_success,
+               .set = py_drsuapi_DsReplicaCursor3_set_last_sync_success,
+               .doc = discard_const_p(char, "PIDL-generated element last_sync_success")
+       },
+       {
+               .name = discard_const_p(char, "source_dsa_obj_dn"),
+               .get = py_drsuapi_DsReplicaCursor3_get_source_dsa_obj_dn,
+               .set = py_drsuapi_DsReplicaCursor3_set_source_dsa_obj_dn,
+               .doc = discard_const_p(char, "PIDL-generated element source_dsa_obj_dn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursor3_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -23209,7 +29483,6 @@ static PyTypeObject drsuapi_DsReplicaCursor3_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursor3_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursor3_new,
 };
 
@@ -23225,6 +29498,10 @@ static PyObject *py_drsuapi_DsReplicaCursor3Ctr_get_count(PyObject *obj, void *c
 static int py_drsuapi_DsReplicaCursor3Ctr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor3Ctr *object = (struct drsuapi_DsReplicaCursor3Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -23268,6 +29545,10 @@ static PyObject *py_drsuapi_DsReplicaCursor3Ctr_get_enumeration_context(PyObject
 static int py_drsuapi_DsReplicaCursor3Ctr_set_enumeration_context(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor3Ctr *object = (struct drsuapi_DsReplicaCursor3Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->enumeration_context");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->enumeration_context));
                if (PyLong_Check(value)) {
@@ -23322,6 +29603,10 @@ static PyObject *py_drsuapi_DsReplicaCursor3Ctr_get_array(PyObject *obj, void *c
 static int py_drsuapi_DsReplicaCursor3Ctr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaCursor3Ctr *object = (struct drsuapi_DsReplicaCursor3Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -23329,6 +29614,10 @@ static int py_drsuapi_DsReplicaCursor3Ctr_set_array(PyObject *py_obj, PyObject *
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaCursor3_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -23341,10 +29630,25 @@ static int py_drsuapi_DsReplicaCursor3Ctr_set_array(PyObject *py_obj, PyObject *
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaCursor3Ctr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaCursor3Ctr_get_count, py_drsuapi_DsReplicaCursor3Ctr_set_count },
-       { discard_const_p(char, "enumeration_context"), py_drsuapi_DsReplicaCursor3Ctr_get_enumeration_context, py_drsuapi_DsReplicaCursor3Ctr_set_enumeration_context },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaCursor3Ctr_get_array, py_drsuapi_DsReplicaCursor3Ctr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaCursor3Ctr_get_count,
+               .set = py_drsuapi_DsReplicaCursor3Ctr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "enumeration_context"),
+               .get = py_drsuapi_DsReplicaCursor3Ctr_get_enumeration_context,
+               .set = py_drsuapi_DsReplicaCursor3Ctr_set_enumeration_context,
+               .doc = discard_const_p(char, "PIDL-generated element enumeration_context")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaCursor3Ctr_get_array,
+               .set = py_drsuapi_DsReplicaCursor3Ctr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaCursor3Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -23359,7 +29663,6 @@ static PyTypeObject drsuapi_DsReplicaCursor3Ctr_Type = {
        .tp_getset = py_drsuapi_DsReplicaCursor3Ctr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaCursor3Ctr_new,
 };
 
@@ -23385,18 +29688,45 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2_get_attribute_name(PyObject *o
 static int py_drsuapi_DsReplicaObjMetaData2_set_attribute_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2 *object = (struct drsuapi_DsReplicaObjMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attribute_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->attribute_name = NULL;
        } else {
                object->attribute_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->attribute_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->attribute_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -23412,6 +29742,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2_get_version(PyObject *obj, voi
 static int py_drsuapi_DsReplicaObjMetaData2_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2 *object = (struct drsuapi_DsReplicaObjMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -23455,6 +29789,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2_get_originating_change_time(Py
 static int py_drsuapi_DsReplicaObjMetaData2_set_originating_change_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2 *object = (struct drsuapi_DsReplicaObjMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_change_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_change_time));
                if (PyLong_Check(value)) {
@@ -23498,6 +29836,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2_get_originating_invocation_id(
 static int py_drsuapi_DsReplicaObjMetaData2_set_originating_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2 *object = (struct drsuapi_DsReplicaObjMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -23518,6 +29860,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2_get_originating_usn(PyObject *
 static int py_drsuapi_DsReplicaObjMetaData2_set_originating_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2 *object = (struct drsuapi_DsReplicaObjMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_usn));
                if (PyLong_Check(value)) {
@@ -23561,6 +29907,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2_get_local_usn(PyObject *obj, v
 static int py_drsuapi_DsReplicaObjMetaData2_set_local_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2 *object = (struct drsuapi_DsReplicaObjMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->local_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->local_usn));
                if (PyLong_Check(value)) {
@@ -23614,31 +29964,93 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2_get_originating_dsa_dn(PyObjec
 static int py_drsuapi_DsReplicaObjMetaData2_set_originating_dsa_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2 *object = (struct drsuapi_DsReplicaObjMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_dsa_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->originating_dsa_dn = NULL;
        } else {
                object->originating_dsa_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->originating_dsa_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->originating_dsa_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->originating_dsa_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->originating_dsa_dn = talloc_str;
+               }
        }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjMetaData2_getsetters[] = {
-       { discard_const_p(char, "attribute_name"), py_drsuapi_DsReplicaObjMetaData2_get_attribute_name, py_drsuapi_DsReplicaObjMetaData2_set_attribute_name },
-       { discard_const_p(char, "version"), py_drsuapi_DsReplicaObjMetaData2_get_version, py_drsuapi_DsReplicaObjMetaData2_set_version },
-       { discard_const_p(char, "originating_change_time"), py_drsuapi_DsReplicaObjMetaData2_get_originating_change_time, py_drsuapi_DsReplicaObjMetaData2_set_originating_change_time },
-       { discard_const_p(char, "originating_invocation_id"), py_drsuapi_DsReplicaObjMetaData2_get_originating_invocation_id, py_drsuapi_DsReplicaObjMetaData2_set_originating_invocation_id },
-       { discard_const_p(char, "originating_usn"), py_drsuapi_DsReplicaObjMetaData2_get_originating_usn, py_drsuapi_DsReplicaObjMetaData2_set_originating_usn },
-       { discard_const_p(char, "local_usn"), py_drsuapi_DsReplicaObjMetaData2_get_local_usn, py_drsuapi_DsReplicaObjMetaData2_set_local_usn },
-       { discard_const_p(char, "originating_dsa_dn"), py_drsuapi_DsReplicaObjMetaData2_get_originating_dsa_dn, py_drsuapi_DsReplicaObjMetaData2_set_originating_dsa_dn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "attribute_name"),
+               .get = py_drsuapi_DsReplicaObjMetaData2_get_attribute_name,
+               .set = py_drsuapi_DsReplicaObjMetaData2_set_attribute_name,
+               .doc = discard_const_p(char, "PIDL-generated element attribute_name")
+       },
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsReplicaObjMetaData2_get_version,
+               .set = py_drsuapi_DsReplicaObjMetaData2_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "originating_change_time"),
+               .get = py_drsuapi_DsReplicaObjMetaData2_get_originating_change_time,
+               .set = py_drsuapi_DsReplicaObjMetaData2_set_originating_change_time,
+               .doc = discard_const_p(char, "PIDL-generated element originating_change_time")
+       },
+       {
+               .name = discard_const_p(char, "originating_invocation_id"),
+               .get = py_drsuapi_DsReplicaObjMetaData2_get_originating_invocation_id,
+               .set = py_drsuapi_DsReplicaObjMetaData2_set_originating_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element originating_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "originating_usn"),
+               .get = py_drsuapi_DsReplicaObjMetaData2_get_originating_usn,
+               .set = py_drsuapi_DsReplicaObjMetaData2_set_originating_usn,
+               .doc = discard_const_p(char, "PIDL-generated element originating_usn")
+       },
+       {
+               .name = discard_const_p(char, "local_usn"),
+               .get = py_drsuapi_DsReplicaObjMetaData2_get_local_usn,
+               .set = py_drsuapi_DsReplicaObjMetaData2_set_local_usn,
+               .doc = discard_const_p(char, "PIDL-generated element local_usn")
+       },
+       {
+               .name = discard_const_p(char, "originating_dsa_dn"),
+               .get = py_drsuapi_DsReplicaObjMetaData2_get_originating_dsa_dn,
+               .set = py_drsuapi_DsReplicaObjMetaData2_set_originating_dsa_dn,
+               .doc = discard_const_p(char, "PIDL-generated element originating_dsa_dn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjMetaData2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -23653,7 +30065,6 @@ static PyTypeObject drsuapi_DsReplicaObjMetaData2_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjMetaData2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjMetaData2_new,
 };
 
@@ -23669,6 +30080,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2Ctr_get_count(PyObject *obj, vo
 static int py_drsuapi_DsReplicaObjMetaData2Ctr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2Ctr *object = (struct drsuapi_DsReplicaObjMetaData2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -23712,6 +30127,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2Ctr_get_enumeration_context(PyO
 static int py_drsuapi_DsReplicaObjMetaData2Ctr_set_enumeration_context(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2Ctr *object = (struct drsuapi_DsReplicaObjMetaData2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->enumeration_context");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->enumeration_context));
                if (PyLong_Check(value)) {
@@ -23766,6 +30185,10 @@ static PyObject *py_drsuapi_DsReplicaObjMetaData2Ctr_get_array(PyObject *obj, vo
 static int py_drsuapi_DsReplicaObjMetaData2Ctr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaObjMetaData2Ctr *object = (struct drsuapi_DsReplicaObjMetaData2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -23773,6 +30196,10 @@ static int py_drsuapi_DsReplicaObjMetaData2Ctr_set_array(PyObject *py_obj, PyObj
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaObjMetaData2_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -23785,10 +30212,25 @@ static int py_drsuapi_DsReplicaObjMetaData2Ctr_set_array(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaObjMetaData2Ctr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaObjMetaData2Ctr_get_count, py_drsuapi_DsReplicaObjMetaData2Ctr_set_count },
-       { discard_const_p(char, "enumeration_context"), py_drsuapi_DsReplicaObjMetaData2Ctr_get_enumeration_context, py_drsuapi_DsReplicaObjMetaData2Ctr_set_enumeration_context },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaObjMetaData2Ctr_get_array, py_drsuapi_DsReplicaObjMetaData2Ctr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaObjMetaData2Ctr_get_count,
+               .set = py_drsuapi_DsReplicaObjMetaData2Ctr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "enumeration_context"),
+               .get = py_drsuapi_DsReplicaObjMetaData2Ctr_get_enumeration_context,
+               .set = py_drsuapi_DsReplicaObjMetaData2Ctr_set_enumeration_context,
+               .doc = discard_const_p(char, "PIDL-generated element enumeration_context")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaObjMetaData2Ctr_get_array,
+               .set = py_drsuapi_DsReplicaObjMetaData2Ctr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaObjMetaData2Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -23803,7 +30245,6 @@ static PyTypeObject drsuapi_DsReplicaObjMetaData2Ctr_Type = {
        .tp_getset = py_drsuapi_DsReplicaObjMetaData2Ctr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaObjMetaData2Ctr_new,
 };
 
@@ -23829,18 +30270,45 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_attribute_name(PyObjec
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_attribute_name(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->attribute_name");
+               return -1;
+       }
        if (value == Py_None) {
                object->attribute_name = NULL;
        } else {
                object->attribute_name = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->attribute_name = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->attribute_name");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->attribute_name = talloc_str;
+               }
        }
        return 0;
 }
@@ -23866,18 +30334,45 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_object_dn(PyObject *ob
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_object_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->object_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->object_dn = NULL;
        } else {
                object->object_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->object_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->object_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->object_dn = talloc_str;
+               }
        }
        return 0;
 }
@@ -23893,6 +30388,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get___ndr_size_binary(PyOb
 static int py_drsuapi_DsReplicaAttrValMetaData2_set___ndr_size_binary(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->__ndr_size_binary");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->__ndr_size_binary));
                if (PyLong_Check(value)) {
@@ -23942,10 +30441,18 @@ static int py_drsuapi_DsReplicaAttrValMetaData2_set_binary(PyObject *py_obj, PyO
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->binary));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->binary");
+               return -1;
+       }
        if (value == Py_None) {
                object->binary = NULL;
        } else {
                object->binary = talloc_ptrtype(pytalloc_get_mem_ctx(py_obj), object->binary);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->binary");
+                       return -1;
+               }
                *object->binary = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
        }
        return 0;
@@ -23962,6 +30469,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_deleted(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_deleted(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->deleted");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->deleted));
                if (PyLong_Check(value)) {
@@ -24005,6 +30516,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_created(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_created(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->created");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->created));
                if (PyLong_Check(value)) {
@@ -24048,6 +30563,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_version(PyObject *obj,
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_version(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->version");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->version));
                if (PyLong_Check(value)) {
@@ -24091,6 +30610,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_originating_change_tim
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_originating_change_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_change_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_change_time));
                if (PyLong_Check(value)) {
@@ -24134,6 +30657,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_originating_invocation
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_originating_invocation_id(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_invocation_id");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -24154,6 +30681,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_originating_usn(PyObje
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_originating_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->originating_usn));
                if (PyLong_Check(value)) {
@@ -24197,6 +30728,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_local_usn(PyObject *ob
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_local_usn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->local_usn");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->local_usn));
                if (PyLong_Check(value)) {
@@ -24250,36 +30785,123 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_get_originating_dsa_dn(PyO
 static int py_drsuapi_DsReplicaAttrValMetaData2_set_originating_dsa_dn(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2 *object = (struct drsuapi_DsReplicaAttrValMetaData2 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->originating_dsa_dn");
+               return -1;
+       }
        if (value == Py_None) {
                object->originating_dsa_dn = NULL;
        } else {
                object->originating_dsa_dn = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->originating_dsa_dn = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->originating_dsa_dn = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->originating_dsa_dn");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->originating_dsa_dn = talloc_str;
+               }
        }
        return 0;
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAttrValMetaData2_getsetters[] = {
-       { discard_const_p(char, "attribute_name"), py_drsuapi_DsReplicaAttrValMetaData2_get_attribute_name, py_drsuapi_DsReplicaAttrValMetaData2_set_attribute_name },
-       { discard_const_p(char, "object_dn"), py_drsuapi_DsReplicaAttrValMetaData2_get_object_dn, py_drsuapi_DsReplicaAttrValMetaData2_set_object_dn },
-       { discard_const_p(char, "__ndr_size_binary"), py_drsuapi_DsReplicaAttrValMetaData2_get___ndr_size_binary, py_drsuapi_DsReplicaAttrValMetaData2_set___ndr_size_binary },
-       { discard_const_p(char, "binary"), py_drsuapi_DsReplicaAttrValMetaData2_get_binary, py_drsuapi_DsReplicaAttrValMetaData2_set_binary },
-       { discard_const_p(char, "deleted"), py_drsuapi_DsReplicaAttrValMetaData2_get_deleted, py_drsuapi_DsReplicaAttrValMetaData2_set_deleted },
-       { discard_const_p(char, "created"), py_drsuapi_DsReplicaAttrValMetaData2_get_created, py_drsuapi_DsReplicaAttrValMetaData2_set_created },
-       { discard_const_p(char, "version"), py_drsuapi_DsReplicaAttrValMetaData2_get_version, py_drsuapi_DsReplicaAttrValMetaData2_set_version },
-       { discard_const_p(char, "originating_change_time"), py_drsuapi_DsReplicaAttrValMetaData2_get_originating_change_time, py_drsuapi_DsReplicaAttrValMetaData2_set_originating_change_time },
-       { discard_const_p(char, "originating_invocation_id"), py_drsuapi_DsReplicaAttrValMetaData2_get_originating_invocation_id, py_drsuapi_DsReplicaAttrValMetaData2_set_originating_invocation_id },
-       { discard_const_p(char, "originating_usn"), py_drsuapi_DsReplicaAttrValMetaData2_get_originating_usn, py_drsuapi_DsReplicaAttrValMetaData2_set_originating_usn },
-       { discard_const_p(char, "local_usn"), py_drsuapi_DsReplicaAttrValMetaData2_get_local_usn, py_drsuapi_DsReplicaAttrValMetaData2_set_local_usn },
-       { discard_const_p(char, "originating_dsa_dn"), py_drsuapi_DsReplicaAttrValMetaData2_get_originating_dsa_dn, py_drsuapi_DsReplicaAttrValMetaData2_set_originating_dsa_dn },
-       { NULL }
+       {
+               .name = discard_const_p(char, "attribute_name"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_attribute_name,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_attribute_name,
+               .doc = discard_const_p(char, "PIDL-generated element attribute_name")
+       },
+       {
+               .name = discard_const_p(char, "object_dn"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_object_dn,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_object_dn,
+               .doc = discard_const_p(char, "PIDL-generated element object_dn")
+       },
+       {
+               .name = discard_const_p(char, "__ndr_size_binary"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get___ndr_size_binary,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set___ndr_size_binary,
+               .doc = discard_const_p(char, "PIDL-generated element __ndr_size_binary")
+       },
+       {
+               .name = discard_const_p(char, "binary"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_binary,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_binary,
+               .doc = discard_const_p(char, "PIDL-generated element binary")
+       },
+       {
+               .name = discard_const_p(char, "deleted"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_deleted,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_deleted,
+               .doc = discard_const_p(char, "PIDL-generated element deleted")
+       },
+       {
+               .name = discard_const_p(char, "created"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_created,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_created,
+               .doc = discard_const_p(char, "PIDL-generated element created")
+       },
+       {
+               .name = discard_const_p(char, "version"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_version,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_version,
+               .doc = discard_const_p(char, "PIDL-generated element version")
+       },
+       {
+               .name = discard_const_p(char, "originating_change_time"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_originating_change_time,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_originating_change_time,
+               .doc = discard_const_p(char, "PIDL-generated element originating_change_time")
+       },
+       {
+               .name = discard_const_p(char, "originating_invocation_id"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_originating_invocation_id,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_originating_invocation_id,
+               .doc = discard_const_p(char, "PIDL-generated element originating_invocation_id")
+       },
+       {
+               .name = discard_const_p(char, "originating_usn"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_originating_usn,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_originating_usn,
+               .doc = discard_const_p(char, "PIDL-generated element originating_usn")
+       },
+       {
+               .name = discard_const_p(char, "local_usn"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_local_usn,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_local_usn,
+               .doc = discard_const_p(char, "PIDL-generated element local_usn")
+       },
+       {
+               .name = discard_const_p(char, "originating_dsa_dn"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2_get_originating_dsa_dn,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2_set_originating_dsa_dn,
+               .doc = discard_const_p(char, "PIDL-generated element originating_dsa_dn")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAttrValMetaData2_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -24294,7 +30916,6 @@ static PyTypeObject drsuapi_DsReplicaAttrValMetaData2_Type = {
        .tp_getset = py_drsuapi_DsReplicaAttrValMetaData2_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAttrValMetaData2_new,
 };
 
@@ -24310,6 +30931,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_count(PyObject *obj
 static int py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2Ctr *object = (struct drsuapi_DsReplicaAttrValMetaData2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -24353,6 +30978,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_enumeration_context
 static int py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_enumeration_context(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2Ctr *object = (struct drsuapi_DsReplicaAttrValMetaData2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->enumeration_context");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->enumeration_context));
                if (PyLong_Check(value)) {
@@ -24407,6 +31036,10 @@ static PyObject *py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_array(PyObject *obj
 static int py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaAttrValMetaData2Ctr *object = (struct drsuapi_DsReplicaAttrValMetaData2Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -24414,6 +31047,10 @@ static int py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_array(PyObject *py_obj, P
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaAttrValMetaData2_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -24426,10 +31063,25 @@ static int py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_array(PyObject *py_obj, P
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaAttrValMetaData2Ctr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_count, py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_count },
-       { discard_const_p(char, "enumeration_context"), py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_enumeration_context, py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_enumeration_context },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_array, py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_count,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "enumeration_context"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_enumeration_context,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_enumeration_context,
+               .doc = discard_const_p(char, "PIDL-generated element enumeration_context")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaAttrValMetaData2Ctr_get_array,
+               .set = py_drsuapi_DsReplicaAttrValMetaData2Ctr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaAttrValMetaData2Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -24444,7 +31096,6 @@ static PyTypeObject drsuapi_DsReplicaAttrValMetaData2Ctr_Type = {
        .tp_getset = py_drsuapi_DsReplicaAttrValMetaData2Ctr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaAttrValMetaData2Ctr_new,
 };
 
@@ -24460,6 +31111,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04_get_u1(PyObject *obj, void *cl
 static int py_drsuapi_DsReplicaConnection04_set_u1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04 *object = (struct drsuapi_DsReplicaConnection04 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u1");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u1));
                if (PyLong_Check(value)) {
@@ -24503,6 +31158,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04_get_u2(PyObject *obj, void *cl
 static int py_drsuapi_DsReplicaConnection04_set_u2(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04 *object = (struct drsuapi_DsReplicaConnection04 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u2");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u2));
                if (PyLong_Check(value)) {
@@ -24546,6 +31205,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04_get_u3(PyObject *obj, void *cl
 static int py_drsuapi_DsReplicaConnection04_set_u3(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04 *object = (struct drsuapi_DsReplicaConnection04 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u3");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u3));
                if (PyLong_Check(value)) {
@@ -24589,6 +31252,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04_get_bind_guid(PyObject *obj, v
 static int py_drsuapi_DsReplicaConnection04_set_bind_guid(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04 *object = (struct drsuapi_DsReplicaConnection04 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->bind_guid");
+               return -1;
+       }
        PY_CHECK_TYPE(GUID_Type, value, return -1;);
        if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
                PyErr_NoMemory();
@@ -24609,6 +31276,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04_get_bind_time(PyObject *obj, v
 static int py_drsuapi_DsReplicaConnection04_set_bind_time(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04 *object = (struct drsuapi_DsReplicaConnection04 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->bind_time");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->bind_time));
                if (PyLong_Check(value)) {
@@ -24652,7 +31323,37 @@ static PyObject *py_drsuapi_DsReplicaConnection04_get_client_ip_address(PyObject
 static int py_drsuapi_DsReplicaConnection04_set_client_ip_address(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04 *object = (struct drsuapi_DsReplicaConnection04 *)pytalloc_get_ptr(py_obj);
-       object->client_ip_address = PyString_AS_STRING(value);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->client_ip_address");
+               return -1;
+       }
+       {
+               const char *test_str;
+               const char *talloc_str;
+               PyObject *unicode = NULL;
+               if (PyUnicode_Check(value)) {
+                       unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                       if (unicode == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       test_str = PyString_AS_STRING(unicode);
+               } else if (PyString_Check(value)) {
+                       test_str = PyString_AS_STRING(value);
+               } else {
+                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                       return -1;
+               }
+               talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+               if (unicode != NULL) {
+                       Py_DECREF(unicode);
+               }
+               if (talloc_str == NULL) {
+                       PyErr_NoMemory();
+                       return -1;
+               }
+               object->client_ip_address = talloc_str;
+       }
        return 0;
 }
 
@@ -24667,6 +31368,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04_get_u5(PyObject *obj, void *cl
 static int py_drsuapi_DsReplicaConnection04_set_u5(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04 *object = (struct drsuapi_DsReplicaConnection04 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u5");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u5));
                if (PyLong_Check(value)) {
@@ -24700,14 +31405,49 @@ static int py_drsuapi_DsReplicaConnection04_set_u5(PyObject *py_obj, PyObject *v
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaConnection04_getsetters[] = {
-       { discard_const_p(char, "u1"), py_drsuapi_DsReplicaConnection04_get_u1, py_drsuapi_DsReplicaConnection04_set_u1 },
-       { discard_const_p(char, "u2"), py_drsuapi_DsReplicaConnection04_get_u2, py_drsuapi_DsReplicaConnection04_set_u2 },
-       { discard_const_p(char, "u3"), py_drsuapi_DsReplicaConnection04_get_u3, py_drsuapi_DsReplicaConnection04_set_u3 },
-       { discard_const_p(char, "bind_guid"), py_drsuapi_DsReplicaConnection04_get_bind_guid, py_drsuapi_DsReplicaConnection04_set_bind_guid },
-       { discard_const_p(char, "bind_time"), py_drsuapi_DsReplicaConnection04_get_bind_time, py_drsuapi_DsReplicaConnection04_set_bind_time },
-       { discard_const_p(char, "client_ip_address"), py_drsuapi_DsReplicaConnection04_get_client_ip_address, py_drsuapi_DsReplicaConnection04_set_client_ip_address },
-       { discard_const_p(char, "u5"), py_drsuapi_DsReplicaConnection04_get_u5, py_drsuapi_DsReplicaConnection04_set_u5 },
-       { NULL }
+       {
+               .name = discard_const_p(char, "u1"),
+               .get = py_drsuapi_DsReplicaConnection04_get_u1,
+               .set = py_drsuapi_DsReplicaConnection04_set_u1,
+               .doc = discard_const_p(char, "PIDL-generated element u1")
+       },
+       {
+               .name = discard_const_p(char, "u2"),
+               .get = py_drsuapi_DsReplicaConnection04_get_u2,
+               .set = py_drsuapi_DsReplicaConnection04_set_u2,
+               .doc = discard_const_p(char, "PIDL-generated element u2")
+       },
+       {
+               .name = discard_const_p(char, "u3"),
+               .get = py_drsuapi_DsReplicaConnection04_get_u3,
+               .set = py_drsuapi_DsReplicaConnection04_set_u3,
+               .doc = discard_const_p(char, "PIDL-generated element u3")
+       },
+       {
+               .name = discard_const_p(char, "bind_guid"),
+               .get = py_drsuapi_DsReplicaConnection04_get_bind_guid,
+               .set = py_drsuapi_DsReplicaConnection04_set_bind_guid,
+               .doc = discard_const_p(char, "PIDL-generated element bind_guid")
+       },
+       {
+               .name = discard_const_p(char, "bind_time"),
+               .get = py_drsuapi_DsReplicaConnection04_get_bind_time,
+               .set = py_drsuapi_DsReplicaConnection04_set_bind_time,
+               .doc = discard_const_p(char, "PIDL-generated element bind_time")
+       },
+       {
+               .name = discard_const_p(char, "client_ip_address"),
+               .get = py_drsuapi_DsReplicaConnection04_get_client_ip_address,
+               .set = py_drsuapi_DsReplicaConnection04_set_client_ip_address,
+               .doc = discard_const_p(char, "PIDL-generated element client_ip_address")
+       },
+       {
+               .name = discard_const_p(char, "u5"),
+               .get = py_drsuapi_DsReplicaConnection04_get_u5,
+               .set = py_drsuapi_DsReplicaConnection04_set_u5,
+               .doc = discard_const_p(char, "PIDL-generated element u5")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaConnection04_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -24722,7 +31462,6 @@ static PyTypeObject drsuapi_DsReplicaConnection04_Type = {
        .tp_getset = py_drsuapi_DsReplicaConnection04_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaConnection04_new,
 };
 
@@ -24738,6 +31477,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04Ctr_get_count(PyObject *obj, vo
 static int py_drsuapi_DsReplicaConnection04Ctr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04Ctr *object = (struct drsuapi_DsReplicaConnection04Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -24781,6 +31524,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04Ctr_get_reserved(PyObject *obj,
 static int py_drsuapi_DsReplicaConnection04Ctr_set_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04Ctr *object = (struct drsuapi_DsReplicaConnection04Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved));
                if (PyLong_Check(value)) {
@@ -24835,6 +31582,10 @@ static PyObject *py_drsuapi_DsReplicaConnection04Ctr_get_array(PyObject *obj, vo
 static int py_drsuapi_DsReplicaConnection04Ctr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplicaConnection04Ctr *object = (struct drsuapi_DsReplicaConnection04Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -24842,6 +31593,10 @@ static int py_drsuapi_DsReplicaConnection04Ctr_set_array(PyObject *py_obj, PyObj
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplicaConnection04_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -24854,10 +31609,25 @@ static int py_drsuapi_DsReplicaConnection04Ctr_set_array(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_DsReplicaConnection04Ctr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplicaConnection04Ctr_get_count, py_drsuapi_DsReplicaConnection04Ctr_set_count },
-       { discard_const_p(char, "reserved"), py_drsuapi_DsReplicaConnection04Ctr_get_reserved, py_drsuapi_DsReplicaConnection04Ctr_set_reserved },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplicaConnection04Ctr_get_array, py_drsuapi_DsReplicaConnection04Ctr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplicaConnection04Ctr_get_count,
+               .set = py_drsuapi_DsReplicaConnection04Ctr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved"),
+               .get = py_drsuapi_DsReplicaConnection04Ctr_get_reserved,
+               .set = py_drsuapi_DsReplicaConnection04Ctr_set_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element reserved")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplicaConnection04Ctr_get_array,
+               .set = py_drsuapi_DsReplicaConnection04Ctr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplicaConnection04Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -24872,7 +31642,6 @@ static PyTypeObject drsuapi_DsReplicaConnection04Ctr_Type = {
        .tp_getset = py_drsuapi_DsReplicaConnection04Ctr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplicaConnection04Ctr_new,
 };
 
@@ -24898,18 +31667,45 @@ static PyObject *py_drsuapi_DsReplica06_get_str1(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_str1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->str1");
+               return -1;
+       }
        if (value == Py_None) {
                object->str1 = NULL;
        } else {
                object->str1 = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->str1 = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->str1 = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->str1");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->str1 = talloc_str;
+               }
        }
        return 0;
 }
@@ -24925,6 +31721,10 @@ static PyObject *py_drsuapi_DsReplica06_get_u1(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_u1(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u1");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u1));
                if (PyLong_Check(value)) {
@@ -24968,6 +31768,10 @@ static PyObject *py_drsuapi_DsReplica06_get_u2(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_u2(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u2");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u2));
                if (PyLong_Check(value)) {
@@ -25011,6 +31815,10 @@ static PyObject *py_drsuapi_DsReplica06_get_u3(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_u3(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u3");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u3));
                if (PyLong_Check(value)) {
@@ -25054,6 +31862,10 @@ static PyObject *py_drsuapi_DsReplica06_get_u4(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_u4(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u4");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u4));
                if (PyLong_Check(value)) {
@@ -25097,6 +31909,10 @@ static PyObject *py_drsuapi_DsReplica06_get_u5(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_u5(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u5");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u5));
                if (PyLong_Check(value)) {
@@ -25140,6 +31956,10 @@ static PyObject *py_drsuapi_DsReplica06_get_u6(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_u6(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u6");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u6));
                if (PyLong_Check(value)) {
@@ -25183,6 +32003,10 @@ static PyObject *py_drsuapi_DsReplica06_get_u7(PyObject *obj, void *closure)
 static int py_drsuapi_DsReplica06_set_u7(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06 *object = (struct drsuapi_DsReplica06 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->u7");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->u7));
                if (PyLong_Check(value)) {
@@ -25216,15 +32040,55 @@ static int py_drsuapi_DsReplica06_set_u7(PyObject *py_obj, PyObject *value, void
 }
 
 static PyGetSetDef py_drsuapi_DsReplica06_getsetters[] = {
-       { discard_const_p(char, "str1"), py_drsuapi_DsReplica06_get_str1, py_drsuapi_DsReplica06_set_str1 },
-       { discard_const_p(char, "u1"), py_drsuapi_DsReplica06_get_u1, py_drsuapi_DsReplica06_set_u1 },
-       { discard_const_p(char, "u2"), py_drsuapi_DsReplica06_get_u2, py_drsuapi_DsReplica06_set_u2 },
-       { discard_const_p(char, "u3"), py_drsuapi_DsReplica06_get_u3, py_drsuapi_DsReplica06_set_u3 },
-       { discard_const_p(char, "u4"), py_drsuapi_DsReplica06_get_u4, py_drsuapi_DsReplica06_set_u4 },
-       { discard_const_p(char, "u5"), py_drsuapi_DsReplica06_get_u5, py_drsuapi_DsReplica06_set_u5 },
-       { discard_const_p(char, "u6"), py_drsuapi_DsReplica06_get_u6, py_drsuapi_DsReplica06_set_u6 },
-       { discard_const_p(char, "u7"), py_drsuapi_DsReplica06_get_u7, py_drsuapi_DsReplica06_set_u7 },
-       { NULL }
+       {
+               .name = discard_const_p(char, "str1"),
+               .get = py_drsuapi_DsReplica06_get_str1,
+               .set = py_drsuapi_DsReplica06_set_str1,
+               .doc = discard_const_p(char, "PIDL-generated element str1")
+       },
+       {
+               .name = discard_const_p(char, "u1"),
+               .get = py_drsuapi_DsReplica06_get_u1,
+               .set = py_drsuapi_DsReplica06_set_u1,
+               .doc = discard_const_p(char, "PIDL-generated element u1")
+       },
+       {
+               .name = discard_const_p(char, "u2"),
+               .get = py_drsuapi_DsReplica06_get_u2,
+               .set = py_drsuapi_DsReplica06_set_u2,
+               .doc = discard_const_p(char, "PIDL-generated element u2")
+       },
+       {
+               .name = discard_const_p(char, "u3"),
+               .get = py_drsuapi_DsReplica06_get_u3,
+               .set = py_drsuapi_DsReplica06_set_u3,
+               .doc = discard_const_p(char, "PIDL-generated element u3")
+       },
+       {
+               .name = discard_const_p(char, "u4"),
+               .get = py_drsuapi_DsReplica06_get_u4,
+               .set = py_drsuapi_DsReplica06_set_u4,
+               .doc = discard_const_p(char, "PIDL-generated element u4")
+       },
+       {
+               .name = discard_const_p(char, "u5"),
+               .get = py_drsuapi_DsReplica06_get_u5,
+               .set = py_drsuapi_DsReplica06_set_u5,
+               .doc = discard_const_p(char, "PIDL-generated element u5")
+       },
+       {
+               .name = discard_const_p(char, "u6"),
+               .get = py_drsuapi_DsReplica06_get_u6,
+               .set = py_drsuapi_DsReplica06_set_u6,
+               .doc = discard_const_p(char, "PIDL-generated element u6")
+       },
+       {
+               .name = discard_const_p(char, "u7"),
+               .get = py_drsuapi_DsReplica06_get_u7,
+               .set = py_drsuapi_DsReplica06_set_u7,
+               .doc = discard_const_p(char, "PIDL-generated element u7")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplica06_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -25239,7 +32103,6 @@ static PyTypeObject drsuapi_DsReplica06_Type = {
        .tp_getset = py_drsuapi_DsReplica06_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplica06_new,
 };
 
@@ -25255,6 +32118,10 @@ static PyObject *py_drsuapi_DsReplica06Ctr_get_count(PyObject *obj, void *closur
 static int py_drsuapi_DsReplica06Ctr_set_count(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06Ctr *object = (struct drsuapi_DsReplica06Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->count");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->count));
                if (PyLong_Check(value)) {
@@ -25298,6 +32165,10 @@ static PyObject *py_drsuapi_DsReplica06Ctr_get_reserved(PyObject *obj, void *clo
 static int py_drsuapi_DsReplica06Ctr_set_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06Ctr *object = (struct drsuapi_DsReplica06Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->reserved));
                if (PyLong_Check(value)) {
@@ -25352,6 +32223,10 @@ static PyObject *py_drsuapi_DsReplica06Ctr_get_array(PyObject *obj, void *closur
 static int py_drsuapi_DsReplica06Ctr_set_array(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsReplica06Ctr *object = (struct drsuapi_DsReplica06Ctr *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array");
+               return -1;
+       }
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
        {
                int array_cntr_0;
@@ -25359,6 +32234,10 @@ static int py_drsuapi_DsReplica06Ctr_set_array(PyObject *py_obj, PyObject *value
                if (!object->array) { return -1;; }
                talloc_set_name_const(object->array, "ARRAY: object->array");
                for (array_cntr_0 = 0; array_cntr_0 < PyList_GET_SIZE(value); array_cntr_0++) {
+                       if (PyList_GET_ITEM(value, array_cntr_0) == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->array[array_cntr_0]");
+                               return -1;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsReplica06_Type, PyList_GET_ITEM(value, array_cntr_0), return -1;);
                        if (talloc_reference(object->array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, array_cntr_0))) == NULL) {
                                PyErr_NoMemory();
@@ -25371,10 +32250,25 @@ static int py_drsuapi_DsReplica06Ctr_set_array(PyObject *py_obj, PyObject *value
 }
 
 static PyGetSetDef py_drsuapi_DsReplica06Ctr_getsetters[] = {
-       { discard_const_p(char, "count"), py_drsuapi_DsReplica06Ctr_get_count, py_drsuapi_DsReplica06Ctr_set_count },
-       { discard_const_p(char, "reserved"), py_drsuapi_DsReplica06Ctr_get_reserved, py_drsuapi_DsReplica06Ctr_set_reserved },
-       { discard_const_p(char, "array"), py_drsuapi_DsReplica06Ctr_get_array, py_drsuapi_DsReplica06Ctr_set_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "count"),
+               .get = py_drsuapi_DsReplica06Ctr_get_count,
+               .set = py_drsuapi_DsReplica06Ctr_set_count,
+               .doc = discard_const_p(char, "PIDL-generated element count")
+       },
+       {
+               .name = discard_const_p(char, "reserved"),
+               .get = py_drsuapi_DsReplica06Ctr_get_reserved,
+               .set = py_drsuapi_DsReplica06Ctr_set_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element reserved")
+       },
+       {
+               .name = discard_const_p(char, "array"),
+               .get = py_drsuapi_DsReplica06Ctr_get_array,
+               .set = py_drsuapi_DsReplica06Ctr_set_array,
+               .doc = discard_const_p(char, "PIDL-generated element array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsReplica06Ctr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -25389,7 +32283,6 @@ static PyTypeObject drsuapi_DsReplica06Ctr_Type = {
        .tp_getset = py_drsuapi_DsReplica06Ctr_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsReplica06Ctr_new,
 };
 
@@ -25543,10 +32436,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
        union drsuapi_DsReplicaInfo *ret = talloc_zero(mem_ctx, union drsuapi_DsReplicaInfo);
        switch (level) {
                case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->neighbours");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->neighbours = NULL;
                        } else {
                                ret->neighbours = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->neighbours");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaNeighbourCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25557,10 +32458,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_CURSORS:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->cursors");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->cursors = NULL;
                        } else {
                                ret->cursors = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->cursors");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaCursorCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25571,10 +32480,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->objmetadata");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->objmetadata = NULL;
                        } else {
                                ret->objmetadata = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->objmetadata");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaObjMetaDataCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25585,10 +32502,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->connectfailures");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->connectfailures = NULL;
                        } else {
                                ret->connectfailures = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->connectfailures");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaKccDsaFailuresCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25599,10 +32524,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->linkfailures");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->linkfailures = NULL;
                        } else {
                                ret->linkfailures = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->linkfailures");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaKccDsaFailuresCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25613,10 +32546,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->pendingops");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->pendingops = NULL;
                        } else {
                                ret->pendingops = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->pendingops");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaOpCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25627,10 +32568,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->attrvalmetadata");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->attrvalmetadata = NULL;
                        } else {
                                ret->attrvalmetadata = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->attrvalmetadata");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaAttrValMetaDataCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25641,10 +32590,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_CURSORS2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->cursors2");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->cursors2 = NULL;
                        } else {
                                ret->cursors2 = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->cursors2");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaCursor2Ctr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25655,10 +32612,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_CURSORS3:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->cursors3");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->cursors3 = NULL;
                        } else {
                                ret->cursors3 = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->cursors3");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaCursor3Ctr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25669,10 +32634,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->objmetadata2");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->objmetadata2 = NULL;
                        } else {
                                ret->objmetadata2 = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->objmetadata2");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaObjMetaData2Ctr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25683,10 +32656,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->attrvalmetadata2");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->attrvalmetadata2 = NULL;
                        } else {
                                ret->attrvalmetadata2 = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->attrvalmetadata2");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaAttrValMetaData2Ctr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25697,10 +32678,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_REPSTO:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->repsto");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->repsto = NULL;
                        } else {
                                ret->repsto = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->repsto");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaNeighbourCtr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25711,10 +32700,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->clientctx");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->clientctx = NULL;
                        } else {
                                ret->clientctx = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->clientctx");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaConnection04Ctr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25725,10 +32722,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->udv1");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->udv1 = NULL;
                        } else {
                                ret->udv1 = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->udv1");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplicaCursorCtrEx_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25739,10 +32744,18 @@ union drsuapi_DsReplicaInfo *py_export_drsuapi_DsReplicaInfo(TALLOC_CTX *mem_ctx
                        break;
 
                case DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->srvoutgoingcalls");
+                               talloc_free(ret); return NULL;
+                       }
                        if (in == Py_None) {
                                ret->srvoutgoingcalls = NULL;
                        } else {
                                ret->srvoutgoingcalls = NULL;
+                               if (in == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *ret->srvoutgoingcalls");
+                                       talloc_free(ret); return NULL;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsReplica06Ctr_Type, in, talloc_free(ret); return NULL;);
                                if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                        PyErr_NoMemory();
@@ -25773,6 +32786,10 @@ static PyObject *py_drsuapi_DsGetMemberships2Ctr1_get_num_entries(PyObject *obj,
 static int py_drsuapi_DsGetMemberships2Ctr1_set_num_entries(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMemberships2Ctr1 *object = (struct drsuapi_DsGetMemberships2Ctr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_entries");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_entries));
                if (PyLong_Check(value)) {
@@ -25838,10 +32855,18 @@ static int py_drsuapi_DsGetMemberships2Ctr1_set_ctrl_array(PyObject *py_obj, PyO
 {
        struct drsuapi_DsGetMemberships2Ctr1 *object = (struct drsuapi_DsGetMemberships2Ctr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->ctrl_array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ctrl_array");
+               return -1;
+       }
        if (value == Py_None) {
                object->ctrl_array = NULL;
        } else {
                object->ctrl_array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ctrl_array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int ctrl_array_cntr_1;
@@ -25849,10 +32874,18 @@ static int py_drsuapi_DsGetMemberships2Ctr1_set_ctrl_array(PyObject *py_obj, PyO
                        if (!object->ctrl_array) { return -1;; }
                        talloc_set_name_const(object->ctrl_array, "ARRAY: object->ctrl_array");
                        for (ctrl_array_cntr_1 = 0; ctrl_array_cntr_1 < PyList_GET_SIZE(value); ctrl_array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, ctrl_array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->ctrl_array[ctrl_array_cntr_1]");
+                                       return -1;
+                               }
                                if (PyList_GET_ITEM(value, ctrl_array_cntr_1) == Py_None) {
                                        object->ctrl_array[ctrl_array_cntr_1] = NULL;
                                } else {
                                        object->ctrl_array[ctrl_array_cntr_1] = NULL;
+                                       if (PyList_GET_ITEM(value, ctrl_array_cntr_1) == NULL) {
+                                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->ctrl_array[ctrl_array_cntr_1]");
+                                               return -1;
+                                       }
                                        PY_CHECK_TYPE(&drsuapi_DsGetMembershipsCtr1_Type, PyList_GET_ITEM(value, ctrl_array_cntr_1), return -1;);
                                        if (talloc_reference(object->ctrl_array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, ctrl_array_cntr_1))) == NULL) {
                                                PyErr_NoMemory();
@@ -25867,9 +32900,19 @@ static int py_drsuapi_DsGetMemberships2Ctr1_set_ctrl_array(PyObject *py_obj, PyO
 }
 
 static PyGetSetDef py_drsuapi_DsGetMemberships2Ctr1_getsetters[] = {
-       { discard_const_p(char, "num_entries"), py_drsuapi_DsGetMemberships2Ctr1_get_num_entries, py_drsuapi_DsGetMemberships2Ctr1_set_num_entries },
-       { discard_const_p(char, "ctrl_array"), py_drsuapi_DsGetMemberships2Ctr1_get_ctrl_array, py_drsuapi_DsGetMemberships2Ctr1_set_ctrl_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "num_entries"),
+               .get = py_drsuapi_DsGetMemberships2Ctr1_get_num_entries,
+               .set = py_drsuapi_DsGetMemberships2Ctr1_set_num_entries,
+               .doc = discard_const_p(char, "PIDL-generated element num_entries")
+       },
+       {
+               .name = discard_const_p(char, "ctrl_array"),
+               .get = py_drsuapi_DsGetMemberships2Ctr1_get_ctrl_array,
+               .set = py_drsuapi_DsGetMemberships2Ctr1_set_ctrl_array,
+               .doc = discard_const_p(char, "PIDL-generated element ctrl_array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetMemberships2Ctr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -25884,7 +32927,6 @@ static PyTypeObject drsuapi_DsGetMemberships2Ctr1_Type = {
        .tp_getset = py_drsuapi_DsGetMemberships2Ctr1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetMemberships2Ctr1_new,
 };
 
@@ -25907,6 +32949,10 @@ union drsuapi_DsGetMemberships2Ctr *py_export_drsuapi_DsGetMemberships2Ctr(TALLO
        union drsuapi_DsGetMemberships2Ctr *ret = talloc_zero(mem_ctx, union drsuapi_DsGetMemberships2Ctr);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetMembershipsCtr1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -25936,6 +32982,10 @@ static PyObject *py_drsuapi_DsGetMemberships2Request1_get_num_req(PyObject *obj,
 static int py_drsuapi_DsGetMemberships2Request1_set_num_req(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsGetMemberships2Request1 *object = (struct drsuapi_DsGetMemberships2Request1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_req");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_req));
                if (PyLong_Check(value)) {
@@ -26001,10 +33051,18 @@ static int py_drsuapi_DsGetMemberships2Request1_set_req_array(PyObject *py_obj,
 {
        struct drsuapi_DsGetMemberships2Request1 *object = (struct drsuapi_DsGetMemberships2Request1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->req_array));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->req_array");
+               return -1;
+       }
        if (value == Py_None) {
                object->req_array = NULL;
        } else {
                object->req_array = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->req_array");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int req_array_cntr_1;
@@ -26012,10 +33070,18 @@ static int py_drsuapi_DsGetMemberships2Request1_set_req_array(PyObject *py_obj,
                        if (!object->req_array) { return -1;; }
                        talloc_set_name_const(object->req_array, "ARRAY: object->req_array");
                        for (req_array_cntr_1 = 0; req_array_cntr_1 < PyList_GET_SIZE(value); req_array_cntr_1++) {
+                               if (PyList_GET_ITEM(value, req_array_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->req_array[req_array_cntr_1]");
+                                       return -1;
+                               }
                                if (PyList_GET_ITEM(value, req_array_cntr_1) == Py_None) {
                                        object->req_array[req_array_cntr_1] = NULL;
                                } else {
                                        object->req_array[req_array_cntr_1] = NULL;
+                                       if (PyList_GET_ITEM(value, req_array_cntr_1) == NULL) {
+                                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->req_array[req_array_cntr_1]");
+                                               return -1;
+                                       }
                                        PY_CHECK_TYPE(&drsuapi_DsGetMembershipsRequest1_Type, PyList_GET_ITEM(value, req_array_cntr_1), return -1;);
                                        if (talloc_reference(object->req_array, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, req_array_cntr_1))) == NULL) {
                                                PyErr_NoMemory();
@@ -26030,9 +33096,19 @@ static int py_drsuapi_DsGetMemberships2Request1_set_req_array(PyObject *py_obj,
 }
 
 static PyGetSetDef py_drsuapi_DsGetMemberships2Request1_getsetters[] = {
-       { discard_const_p(char, "num_req"), py_drsuapi_DsGetMemberships2Request1_get_num_req, py_drsuapi_DsGetMemberships2Request1_set_num_req },
-       { discard_const_p(char, "req_array"), py_drsuapi_DsGetMemberships2Request1_get_req_array, py_drsuapi_DsGetMemberships2Request1_set_req_array },
-       { NULL }
+       {
+               .name = discard_const_p(char, "num_req"),
+               .get = py_drsuapi_DsGetMemberships2Request1_get_num_req,
+               .set = py_drsuapi_DsGetMemberships2Request1_set_num_req,
+               .doc = discard_const_p(char, "PIDL-generated element num_req")
+       },
+       {
+               .name = discard_const_p(char, "req_array"),
+               .get = py_drsuapi_DsGetMemberships2Request1_get_req_array,
+               .set = py_drsuapi_DsGetMemberships2Request1_set_req_array,
+               .doc = discard_const_p(char, "PIDL-generated element req_array")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsGetMemberships2Request1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -26047,7 +33123,6 @@ static PyTypeObject drsuapi_DsGetMemberships2Request1_Type = {
        .tp_getset = py_drsuapi_DsGetMemberships2Request1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsGetMemberships2Request1_new,
 };
 
@@ -26070,6 +33145,10 @@ union drsuapi_DsGetMemberships2Request *py_export_drsuapi_DsGetMemberships2Reque
        union drsuapi_DsGetMemberships2Request *ret = talloc_zero(mem_ctx, union drsuapi_DsGetMemberships2Request);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_DsGetMemberships2Request1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -26099,6 +33178,10 @@ static PyObject *py_drsuapi_DsSiteCostInfo_get_error_code(PyObject *obj, void *c
 static int py_drsuapi_DsSiteCostInfo_set_error_code(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsSiteCostInfo *object = (struct drsuapi_DsSiteCostInfo *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->error_code");
+               return -1;
+       }
        object->error_code = W_ERROR(PyInt_AsLong(value));
        return 0;
 }
@@ -26114,6 +33197,10 @@ static PyObject *py_drsuapi_DsSiteCostInfo_get_site_cost(PyObject *obj, void *cl
 static int py_drsuapi_DsSiteCostInfo_set_site_cost(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_DsSiteCostInfo *object = (struct drsuapi_DsSiteCostInfo *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_cost");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->site_cost));
                if (PyLong_Check(value)) {
@@ -26147,9 +33234,19 @@ static int py_drsuapi_DsSiteCostInfo_set_site_cost(PyObject *py_obj, PyObject *v
 }
 
 static PyGetSetDef py_drsuapi_DsSiteCostInfo_getsetters[] = {
-       { discard_const_p(char, "error_code"), py_drsuapi_DsSiteCostInfo_get_error_code, py_drsuapi_DsSiteCostInfo_set_error_code },
-       { discard_const_p(char, "site_cost"), py_drsuapi_DsSiteCostInfo_get_site_cost, py_drsuapi_DsSiteCostInfo_set_site_cost },
-       { NULL }
+       {
+               .name = discard_const_p(char, "error_code"),
+               .get = py_drsuapi_DsSiteCostInfo_get_error_code,
+               .set = py_drsuapi_DsSiteCostInfo_set_error_code,
+               .doc = discard_const_p(char, "PIDL-generated element error_code")
+       },
+       {
+               .name = discard_const_p(char, "site_cost"),
+               .get = py_drsuapi_DsSiteCostInfo_get_site_cost,
+               .set = py_drsuapi_DsSiteCostInfo_set_site_cost,
+               .doc = discard_const_p(char, "PIDL-generated element site_cost")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_DsSiteCostInfo_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -26164,7 +33261,6 @@ static PyTypeObject drsuapi_DsSiteCostInfo_Type = {
        .tp_getset = py_drsuapi_DsSiteCostInfo_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_DsSiteCostInfo_new,
 };
 
@@ -26180,6 +33276,10 @@ static PyObject *py_drsuapi_QuerySitesByCostCtr1_get_num_info(PyObject *obj, voi
 static int py_drsuapi_QuerySitesByCostCtr1_set_num_info(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_QuerySitesByCostCtr1 *object = (struct drsuapi_QuerySitesByCostCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_info");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_info));
                if (PyLong_Check(value)) {
@@ -26240,10 +33340,18 @@ static int py_drsuapi_QuerySitesByCostCtr1_set_info(PyObject *py_obj, PyObject *
 {
        struct drsuapi_QuerySitesByCostCtr1 *object = (struct drsuapi_QuerySitesByCostCtr1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->info));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info");
+               return -1;
+       }
        if (value == Py_None) {
                object->info = NULL;
        } else {
                object->info = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->info");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int info_cntr_1;
@@ -26251,6 +33359,10 @@ static int py_drsuapi_QuerySitesByCostCtr1_set_info(PyObject *py_obj, PyObject *
                        if (!object->info) { return -1;; }
                        talloc_set_name_const(object->info, "ARRAY: object->info");
                        for (info_cntr_1 = 0; info_cntr_1 < PyList_GET_SIZE(value); info_cntr_1++) {
+                               if (PyList_GET_ITEM(value, info_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->info[info_cntr_1]");
+                                       return -1;
+                               }
                                PY_CHECK_TYPE(&drsuapi_DsSiteCostInfo_Type, PyList_GET_ITEM(value, info_cntr_1), return -1;);
                                if (talloc_reference(object->info, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, info_cntr_1))) == NULL) {
                                        PyErr_NoMemory();
@@ -26274,6 +33386,10 @@ static PyObject *py_drsuapi_QuerySitesByCostCtr1_get_flags_reserved(PyObject *ob
 static int py_drsuapi_QuerySitesByCostCtr1_set_flags_reserved(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_QuerySitesByCostCtr1 *object = (struct drsuapi_QuerySitesByCostCtr1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags_reserved");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags_reserved));
                if (PyLong_Check(value)) {
@@ -26307,10 +33423,25 @@ static int py_drsuapi_QuerySitesByCostCtr1_set_flags_reserved(PyObject *py_obj,
 }
 
 static PyGetSetDef py_drsuapi_QuerySitesByCostCtr1_getsetters[] = {
-       { discard_const_p(char, "num_info"), py_drsuapi_QuerySitesByCostCtr1_get_num_info, py_drsuapi_QuerySitesByCostCtr1_set_num_info },
-       { discard_const_p(char, "info"), py_drsuapi_QuerySitesByCostCtr1_get_info, py_drsuapi_QuerySitesByCostCtr1_set_info },
-       { discard_const_p(char, "flags_reserved"), py_drsuapi_QuerySitesByCostCtr1_get_flags_reserved, py_drsuapi_QuerySitesByCostCtr1_set_flags_reserved },
-       { NULL }
+       {
+               .name = discard_const_p(char, "num_info"),
+               .get = py_drsuapi_QuerySitesByCostCtr1_get_num_info,
+               .set = py_drsuapi_QuerySitesByCostCtr1_set_num_info,
+               .doc = discard_const_p(char, "PIDL-generated element num_info")
+       },
+       {
+               .name = discard_const_p(char, "info"),
+               .get = py_drsuapi_QuerySitesByCostCtr1_get_info,
+               .set = py_drsuapi_QuerySitesByCostCtr1_set_info,
+               .doc = discard_const_p(char, "PIDL-generated element info")
+       },
+       {
+               .name = discard_const_p(char, "flags_reserved"),
+               .get = py_drsuapi_QuerySitesByCostCtr1_get_flags_reserved,
+               .set = py_drsuapi_QuerySitesByCostCtr1_set_flags_reserved,
+               .doc = discard_const_p(char, "PIDL-generated element flags_reserved")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_QuerySitesByCostCtr1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -26325,7 +33456,6 @@ static PyTypeObject drsuapi_QuerySitesByCostCtr1_Type = {
        .tp_getset = py_drsuapi_QuerySitesByCostCtr1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_QuerySitesByCostCtr1_new,
 };
 
@@ -26348,6 +33478,10 @@ union drsuapi_QuerySitesByCostCtr *py_export_drsuapi_QuerySitesByCostCtr(TALLOC_
        union drsuapi_QuerySitesByCostCtr *ret = talloc_zero(mem_ctx, union drsuapi_QuerySitesByCostCtr);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->ctr1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_QuerySitesByCostCtr1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -26387,18 +33521,45 @@ static PyObject *py_drsuapi_QuerySitesByCostRequest1_get_site_from(PyObject *obj
 static int py_drsuapi_QuerySitesByCostRequest1_set_site_from(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_QuerySitesByCostRequest1 *object = (struct drsuapi_QuerySitesByCostRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_from");
+               return -1;
+       }
        if (value == Py_None) {
                object->site_from = NULL;
        } else {
                object->site_from = NULL;
-               if (PyUnicode_Check(value)) {
-                       object->site_from = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
-               } else if (PyString_Check(value)) {
-                       object->site_from = PyString_AS_STRING(value);
-               } else {
-                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_from");
                        return -1;
                }
+               {
+                       const char *test_str;
+                       const char *talloc_str;
+                       PyObject *unicode = NULL;
+                       if (PyUnicode_Check(value)) {
+                               unicode = PyUnicode_AsEncodedString(value, "utf-8", "ignore");
+                               if (unicode == NULL) {
+                                       PyErr_NoMemory();
+                                       return -1;
+                               }
+                               test_str = PyString_AS_STRING(unicode);
+                       } else if (PyString_Check(value)) {
+                               test_str = PyString_AS_STRING(value);
+                       } else {
+                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
+                               return -1;
+                       }
+                       talloc_str = talloc_strdup(pytalloc_get_mem_ctx(py_obj), test_str);
+                       if (unicode != NULL) {
+                               Py_DECREF(unicode);
+                       }
+                       if (talloc_str == NULL) {
+                               PyErr_NoMemory();
+                               return -1;
+                       }
+                       object->site_from = talloc_str;
+               }
        }
        return 0;
 }
@@ -26414,6 +33575,10 @@ static PyObject *py_drsuapi_QuerySitesByCostRequest1_get_num_req(PyObject *obj,
 static int py_drsuapi_QuerySitesByCostRequest1_set_num_req(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_QuerySitesByCostRequest1 *object = (struct drsuapi_QuerySitesByCostRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->num_req");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->num_req));
                if (PyLong_Check(value)) {
@@ -26484,10 +33649,18 @@ static int py_drsuapi_QuerySitesByCostRequest1_set_site_to(PyObject *py_obj, PyO
 {
        struct drsuapi_QuerySitesByCostRequest1 *object = (struct drsuapi_QuerySitesByCostRequest1 *)pytalloc_get_ptr(py_obj);
        talloc_unlink(pytalloc_get_mem_ctx(py_obj), discard_const(object->site_to));
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_to");
+               return -1;
+       }
        if (value == Py_None) {
                object->site_to = NULL;
        } else {
                object->site_to = NULL;
+               if (value == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_to");
+                       return -1;
+               }
                PY_CHECK_TYPE(&PyList_Type, value, return -1;);
                {
                        int site_to_cntr_1;
@@ -26495,18 +33668,45 @@ static int py_drsuapi_QuerySitesByCostRequest1_set_site_to(PyObject *py_obj, PyO
                        if (!object->site_to) { return -1;; }
                        talloc_set_name_const(object->site_to, "ARRAY: object->site_to");
                        for (site_to_cntr_1 = 0; site_to_cntr_1 < PyList_GET_SIZE(value); site_to_cntr_1++) {
+                               if (PyList_GET_ITEM(value, site_to_cntr_1) == NULL) {
+                                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->site_to[site_to_cntr_1]");
+                                       return -1;
+                               }
                                if (PyList_GET_ITEM(value, site_to_cntr_1) == Py_None) {
                                        object->site_to[site_to_cntr_1] = NULL;
                                } else {
                                        object->site_to[site_to_cntr_1] = NULL;
-                                       if (PyUnicode_Check(PyList_GET_ITEM(value, site_to_cntr_1))) {
-                                               object->site_to[site_to_cntr_1] = PyString_AS_STRING(PyUnicode_AsEncodedString(PyList_GET_ITEM(value, site_to_cntr_1), "utf-8", "ignore"));
-                                       } else if (PyString_Check(PyList_GET_ITEM(value, site_to_cntr_1))) {
-                                               object->site_to[site_to_cntr_1] = PyString_AS_STRING(PyList_GET_ITEM(value, site_to_cntr_1));
-                                       } else {
-                                               PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(PyList_GET_ITEM(value, site_to_cntr_1))->tp_name);
+                                       if (PyList_GET_ITEM(value, site_to_cntr_1) == NULL) {
+                                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *object->site_to[site_to_cntr_1]");
                                                return -1;
                                        }
+                                       {
+                                               const char *test_str;
+                                               const char *talloc_str;
+                                               PyObject *unicode = NULL;
+                                               if (PyUnicode_Check(PyList_GET_ITEM(value, site_to_cntr_1))) {
+                                                       unicode = PyUnicode_AsEncodedString(PyList_GET_ITEM(value, site_to_cntr_1), "utf-8", "ignore");
+                                                       if (unicode == NULL) {
+                                                               PyErr_NoMemory();
+                                                               return -1;
+                                                       }
+                                                       test_str = PyString_AS_STRING(unicode);
+                                               } else if (PyString_Check(PyList_GET_ITEM(value, site_to_cntr_1))) {
+                                                       test_str = PyString_AS_STRING(PyList_GET_ITEM(value, site_to_cntr_1));
+                                               } else {
+                                                       PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(PyList_GET_ITEM(value, site_to_cntr_1))->tp_name);
+                                                       return -1;
+                                               }
+                                               talloc_str = talloc_strdup(object->site_to, test_str);
+                                               if (unicode != NULL) {
+                                                       Py_DECREF(unicode);
+                                               }
+                                               if (talloc_str == NULL) {
+                                                       PyErr_NoMemory();
+                                                       return -1;
+                                               }
+                                               object->site_to[site_to_cntr_1] = talloc_str;
+                                       }
                                }
                        }
                }
@@ -26525,6 +33725,10 @@ static PyObject *py_drsuapi_QuerySitesByCostRequest1_get_flags(PyObject *obj, vo
 static int py_drsuapi_QuerySitesByCostRequest1_set_flags(PyObject *py_obj, PyObject *value, void *closure)
 {
        struct drsuapi_QuerySitesByCostRequest1 *object = (struct drsuapi_QuerySitesByCostRequest1 *)pytalloc_get_ptr(py_obj);
+       if (value == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->flags");
+               return -1;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->flags));
                if (PyLong_Check(value)) {
@@ -26558,11 +33762,31 @@ static int py_drsuapi_QuerySitesByCostRequest1_set_flags(PyObject *py_obj, PyObj
 }
 
 static PyGetSetDef py_drsuapi_QuerySitesByCostRequest1_getsetters[] = {
-       { discard_const_p(char, "site_from"), py_drsuapi_QuerySitesByCostRequest1_get_site_from, py_drsuapi_QuerySitesByCostRequest1_set_site_from },
-       { discard_const_p(char, "num_req"), py_drsuapi_QuerySitesByCostRequest1_get_num_req, py_drsuapi_QuerySitesByCostRequest1_set_num_req },
-       { discard_const_p(char, "site_to"), py_drsuapi_QuerySitesByCostRequest1_get_site_to, py_drsuapi_QuerySitesByCostRequest1_set_site_to },
-       { discard_const_p(char, "flags"), py_drsuapi_QuerySitesByCostRequest1_get_flags, py_drsuapi_QuerySitesByCostRequest1_set_flags },
-       { NULL }
+       {
+               .name = discard_const_p(char, "site_from"),
+               .get = py_drsuapi_QuerySitesByCostRequest1_get_site_from,
+               .set = py_drsuapi_QuerySitesByCostRequest1_set_site_from,
+               .doc = discard_const_p(char, "PIDL-generated element site_from")
+       },
+       {
+               .name = discard_const_p(char, "num_req"),
+               .get = py_drsuapi_QuerySitesByCostRequest1_get_num_req,
+               .set = py_drsuapi_QuerySitesByCostRequest1_set_num_req,
+               .doc = discard_const_p(char, "PIDL-generated element num_req")
+       },
+       {
+               .name = discard_const_p(char, "site_to"),
+               .get = py_drsuapi_QuerySitesByCostRequest1_get_site_to,
+               .set = py_drsuapi_QuerySitesByCostRequest1_set_site_to,
+               .doc = discard_const_p(char, "PIDL-generated element site_to")
+       },
+       {
+               .name = discard_const_p(char, "flags"),
+               .get = py_drsuapi_QuerySitesByCostRequest1_get_flags,
+               .set = py_drsuapi_QuerySitesByCostRequest1_set_flags,
+               .doc = discard_const_p(char, "PIDL-generated element flags")
+       },
+       { .name = NULL }
 };
 
 static PyObject *py_drsuapi_QuerySitesByCostRequest1_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
@@ -26577,7 +33801,6 @@ static PyTypeObject drsuapi_QuerySitesByCostRequest1_Type = {
        .tp_getset = py_drsuapi_QuerySitesByCostRequest1_getsetters,
        .tp_methods = NULL,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_new = py_drsuapi_QuerySitesByCostRequest1_new,
 };
 
@@ -26600,6 +33823,10 @@ union drsuapi_QuerySitesByCostRequest *py_export_drsuapi_QuerySitesByCostRequest
        union drsuapi_QuerySitesByCostRequest *ret = talloc_zero(mem_ctx, union drsuapi_QuerySitesByCostRequest);
        switch (level) {
                case 1:
+                       if (in == NULL) {
+                               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct ret->req1");
+                               talloc_free(ret); return NULL;
+                       }
                        PY_CHECK_TYPE(&drsuapi_QuerySitesByCostRequest1_Type, in, talloc_free(ret); return NULL;);
                        if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
                                PyErr_NoMemory();
@@ -26630,10 +33857,18 @@ static bool pack_py_drsuapi_DsBind_args_in(PyObject *args, PyObject *kwargs, str
                return false;
        }
 
+       if (py_bind_guid == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_guid");
+               return false;
+       }
        if (py_bind_guid == Py_None) {
                r->in.bind_guid = NULL;
        } else {
                r->in.bind_guid = NULL;
+               if (py_bind_guid == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_guid");
+                       return false;
+               }
                PY_CHECK_TYPE(GUID_Type, py_bind_guid, return false;);
                if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_guid)) == NULL) {
                        PyErr_NoMemory();
@@ -26641,10 +33876,18 @@ static bool pack_py_drsuapi_DsBind_args_in(PyObject *args, PyObject *kwargs, str
                }
                r->in.bind_guid = (struct GUID *)pytalloc_get_ptr(py_bind_guid);
        }
+       if (py_bind_info == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_info");
+               return false;
+       }
        if (py_bind_info == Py_None) {
                r->in.bind_info = NULL;
        } else {
                r->in.bind_info = NULL;
+               if (py_bind_info == NULL) {
+                       PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_info");
+                       return false;
+               }
                PY_CHECK_TYPE(&drsuapi_DsBindInfoCtr_Type, py_bind_info, return false;);
                if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_info)) == NULL) {
                        PyErr_NoMemory();
@@ -26689,7 +33932,15 @@ static bool pack_py_drsuapi_DsUnbind_args_in(PyObject *args, PyObject *kwargs, s
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
@@ -26726,13 +33977,25 @@ static bool pack_py_drsuapi_DsReplicaSync_args_in(PyObject *args, PyObject *kwar
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -26762,7 +34025,15 @@ static bool pack_py_drsuapi_DsReplicaSync_args_in(PyObject *args, PyObject *kwar
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsReplicaSyncRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsReplicaSyncRequest(r, r->in.level, py_req);
@@ -26800,13 +34071,25 @@ static bool pack_py_drsuapi_DsGetNCChanges_args_in(PyObject *args, PyObject *kwa
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -26836,7 +34119,15 @@ static bool pack_py_drsuapi_DsGetNCChanges_args_in(PyObject *args, PyObject *kwa
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsGetNCChangesRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsGetNCChangesRequest(r, r->in.level, py_req);
@@ -26882,13 +34173,25 @@ static bool pack_py_drsuapi_DsReplicaUpdateRefs_args_in(PyObject *args, PyObject
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -26918,6 +34221,10 @@ static bool pack_py_drsuapi_DsReplicaUpdateRefs_args_in(PyObject *args, PyObject
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsReplicaUpdateRefsRequest *req_switch_0;
                req_switch_0 = py_export_drsuapi_DsReplicaUpdateRefsRequest(r, r->in.level, py_req);
@@ -26955,13 +34262,25 @@ static bool pack_py_drsuapi_DsReplicaAdd_args_in(PyObject *args, PyObject *kwarg
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -26991,6 +34310,10 @@ static bool pack_py_drsuapi_DsReplicaAdd_args_in(PyObject *args, PyObject *kwarg
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsReplicaAddRequest *req_switch_0;
                req_switch_0 = py_export_drsuapi_DsReplicaAddRequest(r, r->in.level, py_req);
@@ -27028,13 +34351,25 @@ static bool pack_py_drsuapi_DsReplicaDel_args_in(PyObject *args, PyObject *kwarg
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27064,6 +34399,10 @@ static bool pack_py_drsuapi_DsReplicaDel_args_in(PyObject *args, PyObject *kwarg
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsReplicaDelRequest *req_switch_0;
                req_switch_0 = py_export_drsuapi_DsReplicaDelRequest(r, r->in.level, py_req);
@@ -27101,13 +34440,25 @@ static bool pack_py_drsuapi_DsReplicaMod_args_in(PyObject *args, PyObject *kwarg
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27137,6 +34488,10 @@ static bool pack_py_drsuapi_DsReplicaMod_args_in(PyObject *args, PyObject *kwarg
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsReplicaModRequest *req_switch_0;
                req_switch_0 = py_export_drsuapi_DsReplicaModRequest(r, r->in.level, py_req);
@@ -27174,13 +34529,25 @@ static bool pack_py_drsuapi_DsGetMemberships_args_in(PyObject *args, PyObject *k
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27210,7 +34577,15 @@ static bool pack_py_drsuapi_DsGetMemberships_args_in(PyObject *args, PyObject *k
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsGetMembershipsRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsGetMembershipsRequest(r, r->in.level, py_req);
@@ -27256,13 +34631,25 @@ static bool pack_py_drsuapi_DsGetNT4ChangeLog_args_in(PyObject *args, PyObject *
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27292,7 +34679,15 @@ static bool pack_py_drsuapi_DsGetNT4ChangeLog_args_in(PyObject *args, PyObject *
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsGetNT4ChangeLogRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsGetNT4ChangeLogRequest(r, r->in.level, py_req);
@@ -27338,13 +34733,25 @@ static bool pack_py_drsuapi_DsCrackNames_args_in(PyObject *args, PyObject *kwarg
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27374,7 +34781,15 @@ static bool pack_py_drsuapi_DsCrackNames_args_in(PyObject *args, PyObject *kwarg
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsNameRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsNameRequest(r, r->in.level, py_req);
@@ -27420,13 +34835,25 @@ static bool pack_py_drsuapi_DsWriteAccountSpn_args_in(PyObject *args, PyObject *
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27456,7 +34883,15 @@ static bool pack_py_drsuapi_DsWriteAccountSpn_args_in(PyObject *args, PyObject *
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsWriteAccountSpnRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsWriteAccountSpnRequest(r, r->in.level, py_req);
@@ -27502,13 +34937,25 @@ static bool pack_py_drsuapi_DsRemoveDSServer_args_in(PyObject *args, PyObject *k
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27538,7 +34985,15 @@ static bool pack_py_drsuapi_DsRemoveDSServer_args_in(PyObject *args, PyObject *k
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsRemoveDSServerRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsRemoveDSServerRequest(r, r->in.level, py_req);
@@ -27584,13 +35039,25 @@ static bool pack_py_drsuapi_DsGetDomainControllerInfo_args_in(PyObject *args, Py
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27620,7 +35087,15 @@ static bool pack_py_drsuapi_DsGetDomainControllerInfo_args_in(PyObject *args, Py
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsGetDCInfoRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsGetDCInfoRequest(r, r->in.level, py_req);
@@ -27666,13 +35141,25 @@ static bool pack_py_drsuapi_DsAddEntry_args_in(PyObject *args, PyObject *kwargs,
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27702,7 +35189,15 @@ static bool pack_py_drsuapi_DsAddEntry_args_in(PyObject *args, PyObject *kwargs,
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsAddEntryRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsAddEntryRequest(r, r->in.level, py_req);
@@ -27748,13 +35243,25 @@ static bool pack_py_drsuapi_DsExecuteKCC_args_in(PyObject *args, PyObject *kwarg
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27784,7 +35291,15 @@ static bool pack_py_drsuapi_DsExecuteKCC_args_in(PyObject *args, PyObject *kwarg
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsExecuteKCCRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsExecuteKCCRequest(r, r->in.level, py_req);
@@ -27822,13 +35337,25 @@ static bool pack_py_drsuapi_DsReplicaGetInfo_args_in(PyObject *args, PyObject *k
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27858,7 +35385,15 @@ static bool pack_py_drsuapi_DsReplicaGetInfo_args_in(PyObject *args, PyObject *k
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsReplicaGetInfoRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsReplicaGetInfoRequest(r, r->in.level, py_req);
@@ -27904,13 +35439,25 @@ static bool pack_py_drsuapi_DsGetMemberships2_args_in(PyObject *args, PyObject *
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -27940,7 +35487,15 @@ static bool pack_py_drsuapi_DsGetMemberships2_args_in(PyObject *args, PyObject *
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_DsGetMemberships2Request *req_switch_1;
                req_switch_1 = py_export_drsuapi_DsGetMemberships2Request(r, r->in.level, py_req);
@@ -27986,13 +35541,25 @@ static bool pack_py_drsuapi_QuerySitesByCost_args_in(PyObject *args, PyObject *k
                return false;
        }
 
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.bind_handle");
+               return false;
+       }
        r->in.bind_handle = talloc_ptrtype(r, r->in.bind_handle);
+       if (py_bind_handle == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.bind_handle");
+               return false;
+       }
        PY_CHECK_TYPE(policy_handle_Type, py_bind_handle, return false;);
        if (talloc_reference(r, pytalloc_get_mem_ctx(py_bind_handle)) == NULL) {
                PyErr_NoMemory();
                return false;
        }
        r->in.bind_handle = (struct policy_handle *)pytalloc_get_ptr(py_bind_handle);
+       if (py_level == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.level");
+               return false;
+       }
        {
                const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(r->in.level));
                if (PyLong_Check(py_level)) {
@@ -28022,7 +35589,15 @@ static bool pack_py_drsuapi_QuerySitesByCost_args_in(PyObject *args, PyObject *k
                        return false;
                }
        }
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct r->in.req");
+               return false;
+       }
        r->in.req = talloc_ptrtype(r, r->in.req);
+       if (py_req == NULL) {
+               PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct *r->in.req");
+               return false;
+       }
        {
                union drsuapi_QuerySitesByCostRequest *req_switch_1;
                req_switch_1 = py_export_drsuapi_QuerySitesByCostRequest(r, r->in.level, py_req);
@@ -28106,7 +35681,6 @@ static PyObject *syntax_drsuapi_new(PyTypeObject *type, PyObject *args, PyObject
 static PyTypeObject drsuapi_SyntaxType = {
        PyObject_HEAD_INIT(NULL) 0,
        .tp_name = "drsuapi.drsuapi",
-       .tp_basicsize = sizeof(pytalloc_Object),
        .tp_doc = "abstract_syntax()\n"PY_DOC_DRSUAPI_SYNTAX,
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
        .tp_new = syntax_drsuapi_new,
@@ -28154,8 +35728,8 @@ void initdrsuapi(void)
        if (GUID_Type == NULL)
                return;
 
-       Object_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "Object");
-       if (Object_Type == NULL)
+       BaseObject_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "BaseObject");
+       if (BaseObject_Type == NULL)
                return;
 
        dom_sid_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_security, "dom_sid");
@@ -28178,241 +35752,358 @@ void initdrsuapi(void)
        if (ndr_syntax_id_Type == NULL)
                return;
 
-       drsuapi_DsBindInfo24_Type.tp_base = Object_Type;
+       drsuapi_DsBindInfo24_Type.tp_base = BaseObject_Type;
+       drsuapi_DsBindInfo24_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsBindInfo28_Type.tp_base = Object_Type;
+       drsuapi_DsBindInfo28_Type.tp_base = BaseObject_Type;
+       drsuapi_DsBindInfo28_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsBindInfo32_Type.tp_base = Object_Type;
+       drsuapi_DsBindInfo32_Type.tp_base = BaseObject_Type;
+       drsuapi_DsBindInfo32_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsBindInfo48_Type.tp_base = Object_Type;
+       drsuapi_DsBindInfo48_Type.tp_base = BaseObject_Type;
+       drsuapi_DsBindInfo48_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsBindInfo52_Type.tp_base = Object_Type;
+       drsuapi_DsBindInfo52_Type.tp_base = BaseObject_Type;
+       drsuapi_DsBindInfo52_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsBindInfoFallBack_Type.tp_base = Object_Type;
+       drsuapi_DsBindInfoFallBack_Type.tp_base = BaseObject_Type;
+       drsuapi_DsBindInfoFallBack_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsBindInfoCtr_Type.tp_base = Object_Type;
+       drsuapi_DsBindInfoCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsBindInfoCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjectIdentifier_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjectIdentifier_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjectIdentifier_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaSyncRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaSyncRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaSyncRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaHighWaterMark_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaHighWaterMark_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaHighWaterMark_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursor_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursor_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursor_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursorCtrEx_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursorCtrEx_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursorCtrEx_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesRequest5_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesRequest5_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesRequest5_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaOID_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaOID_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaOID_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaOIDMapping_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaOIDMapping_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaOIDMapping_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaOIDMapping_Ctr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaOIDMapping_Ctr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaOIDMapping_Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsPartialAttributeSet_Type.tp_base = Object_Type;
+       drsuapi_DsPartialAttributeSet_Type.tp_base = BaseObject_Type;
+       drsuapi_DsPartialAttributeSet_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesRequest8_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesRequest8_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesRequest8_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesRequest10_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesRequest10_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesRequest10_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursor2_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursor2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursor2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursor2CtrEx_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursor2CtrEx_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursor2CtrEx_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAttributeValue_Type.tp_base = Object_Type;
+       drsuapi_DsAttributeValue_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAttributeValue_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAttributeValueCtr_Type.tp_base = Object_Type;
+       drsuapi_DsAttributeValueCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAttributeValueCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjectIdentifier3_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjectIdentifier3_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjectIdentifier3_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjectIdentifier3Binary_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjectIdentifier3Binary_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjectIdentifier3Binary_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAttribute_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAttribute_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAttribute_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAttributeCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAttributeCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAttributeCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObject_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObject_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObject_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaMetaData_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaMetaData_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaMetaData_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaMetaDataCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaMetaDataCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaMetaDataCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjectListItemEx_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjectListItemEx_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjectListItemEx_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesCtr1_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesCtr1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesCtr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaLinkedAttribute_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaLinkedAttribute_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaLinkedAttribute_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesCtr6_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesCtr6_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesCtr6_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesCtr1TS_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesCtr1TS_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesCtr1TS_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesCtr6TS_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesCtr6TS_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesCtr6TS_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesMSZIPCtr1_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesMSZIPCtr1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesMSZIPCtr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesMSZIPCtr6_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesMSZIPCtr6_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesMSZIPCtr6_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesXPRESSCtr1_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesXPRESSCtr1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesXPRESSCtr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesXPRESSCtr6_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesXPRESSCtr6_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesXPRESSCtr6_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesCtr2_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesCtr2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesCtr2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNCChangesCtr7_Type.tp_base = Object_Type;
+       drsuapi_DsGetNCChangesCtr7_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNCChangesCtr7_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaUpdateRefsRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaUpdateRefsRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaUpdateRefsRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAddRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAddRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAddRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAddRequest2_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAddRequest2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAddRequest2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaDelRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaDelRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaDelRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaModRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaModRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaModRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetMembershipsCtr1_Type.tp_base = Object_Type;
+       drsuapi_DsGetMembershipsCtr1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetMembershipsCtr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetMembershipsRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsGetMembershipsRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetMembershipsRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNT4ChangeLogRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsGetNT4ChangeLogRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNT4ChangeLogRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetNT4ChangeLogInfo1_Type.tp_base = Object_Type;
+       drsuapi_DsGetNT4ChangeLogInfo1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetNT4ChangeLogInfo1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsNameString_Type.tp_base = Object_Type;
+       drsuapi_DsNameString_Type.tp_base = BaseObject_Type;
+       drsuapi_DsNameString_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsNameRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsNameRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsNameRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsNameInfo1_Type.tp_base = Object_Type;
+       drsuapi_DsNameInfo1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsNameInfo1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsNameCtr1_Type.tp_base = Object_Type;
+       drsuapi_DsNameCtr1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsNameCtr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsWriteAccountSpnRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsWriteAccountSpnRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsWriteAccountSpnRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsWriteAccountSpnResult1_Type.tp_base = Object_Type;
+       drsuapi_DsWriteAccountSpnResult1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsWriteAccountSpnResult1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsRemoveDSServerRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsRemoveDSServerRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsRemoveDSServerRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsRemoveDSServerResult1_Type.tp_base = Object_Type;
+       drsuapi_DsRemoveDSServerResult1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsRemoveDSServerResult1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCInfoRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCInfoRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCInfoRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCInfo1_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCInfo1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCInfo1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCInfoCtr1_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCInfoCtr1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCInfoCtr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCInfo2_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCInfo2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCInfo2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCInfoCtr2_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCInfoCtr2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCInfoCtr2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCInfo3_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCInfo3_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCInfo3_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCInfoCtr3_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCInfoCtr3_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCInfoCtr3_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCConnection01_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCConnection01_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCConnection01_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetDCConnectionCtr01_Type.tp_base = Object_Type;
+       drsuapi_DsGetDCConnectionCtr01_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetDCConnectionCtr01_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjectListItem_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjectListItem_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjectListItem_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryRequest2_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryRequest2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryRequest2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_SecBuffer_Type.tp_base = Object_Type;
+       drsuapi_SecBuffer_Type.tp_base = BaseObject_Type;
+       drsuapi_SecBuffer_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_SecBufferDesc_Type.tp_base = Object_Type;
+       drsuapi_SecBufferDesc_Type.tp_base = BaseObject_Type;
+       drsuapi_SecBufferDesc_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryRequest3_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryRequest3_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryRequest3_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryErrorInfoX_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryErrorInfoX_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryErrorInfoX_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntry_AttrErr_V1_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntry_AttrErr_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntry_AttrErr_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntry_AttrErrListItem_V1_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntry_AttrErrListItem_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntry_AttrErrListItem_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryErrorInfo_Attr_V1_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryErrorInfo_Attr_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryErrorInfo_Attr_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryErrorInfo_Name_V1_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryErrorInfo_Name_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryErrorInfo_Name_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_NameResOp_V1_Type.tp_base = Object_Type;
+       drsuapi_NameResOp_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_NameResOp_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsaAddressListItem_V1_Type.tp_base = Object_Type;
+       drsuapi_DsaAddressListItem_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsaAddressListItem_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntry_RefErrListItem_V1_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntry_RefErrListItem_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntry_RefErrListItem_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryErrorInfo_Referr_V1_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryErrorInfo_Referr_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryErrorInfo_Referr_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntry_ErrData_V1_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntry_ErrData_V1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntry_ErrData_V1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjectIdentifier2_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjectIdentifier2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjectIdentifier2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryCtr2_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryCtr2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryCtr2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsAddEntryCtr3_Type.tp_base = Object_Type;
+       drsuapi_DsAddEntryCtr3_Type.tp_base = BaseObject_Type;
+       drsuapi_DsAddEntryCtr3_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsExecuteKCC1_Type.tp_base = Object_Type;
+       drsuapi_DsExecuteKCC1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsExecuteKCC1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaGetInfoRequest1_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaGetInfoRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaGetInfoRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaGetInfoRequest2_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaGetInfoRequest2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaGetInfoRequest2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaNeighbour_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaNeighbour_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaNeighbour_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaNeighbourCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaNeighbourCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaNeighbourCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursorCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursorCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursorCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjMetaData_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjMetaData_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjMetaData_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjMetaDataCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjMetaDataCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjMetaDataCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaKccDsaFailure_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaKccDsaFailure_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaKccDsaFailure_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaKccDsaFailuresCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaKccDsaFailuresCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaKccDsaFailuresCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaOp_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaOp_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaOp_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaOpCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaOpCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaOpCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAttrValMetaData_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAttrValMetaData_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAttrValMetaData_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAttrValMetaDataCtr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAttrValMetaDataCtr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAttrValMetaDataCtr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursor2Ctr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursor2Ctr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursor2Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursor3_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursor3_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursor3_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaCursor3Ctr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaCursor3Ctr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaCursor3Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjMetaData2_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjMetaData2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjMetaData2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaObjMetaData2Ctr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaObjMetaData2Ctr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaObjMetaData2Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAttrValMetaData2_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAttrValMetaData2_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAttrValMetaData2_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaAttrValMetaData2Ctr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaAttrValMetaData2Ctr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaAttrValMetaData2Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaConnection04_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaConnection04_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaConnection04_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplicaConnection04Ctr_Type.tp_base = Object_Type;
+       drsuapi_DsReplicaConnection04Ctr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplicaConnection04Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplica06_Type.tp_base = Object_Type;
+       drsuapi_DsReplica06_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplica06_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsReplica06Ctr_Type.tp_base = Object_Type;
+       drsuapi_DsReplica06Ctr_Type.tp_base = BaseObject_Type;
+       drsuapi_DsReplica06Ctr_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetMemberships2Ctr1_Type.tp_base = Object_Type;
+       drsuapi_DsGetMemberships2Ctr1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetMemberships2Ctr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsGetMemberships2Request1_Type.tp_base = Object_Type;
+       drsuapi_DsGetMemberships2Request1_Type.tp_base = BaseObject_Type;
+       drsuapi_DsGetMemberships2Request1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_DsSiteCostInfo_Type.tp_base = Object_Type;
+       drsuapi_DsSiteCostInfo_Type.tp_base = BaseObject_Type;
+       drsuapi_DsSiteCostInfo_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_QuerySitesByCostCtr1_Type.tp_base = Object_Type;
+       drsuapi_QuerySitesByCostCtr1_Type.tp_base = BaseObject_Type;
+       drsuapi_QuerySitesByCostCtr1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
-       drsuapi_QuerySitesByCostRequest1_Type.tp_base = Object_Type;
+       drsuapi_QuerySitesByCostRequest1_Type.tp_base = BaseObject_Type;
+       drsuapi_QuerySitesByCostRequest1_Type.tp_basicsize = pytalloc_BaseObject_size();
 
        drsuapi_InterfaceType.tp_base = ClientConnection_Type;
 
        drsuapi_SyntaxType.tp_base = ndr_syntax_id_Type;
+       drsuapi_SyntaxType.tp_basicsize = pytalloc_BaseObject_size();
 
        if (PyType_Ready(&drsuapi_DsBindInfo24_Type) < 0)
                return;
@@ -29158,6 +36849,8 @@ void initdrsuapi(void)
        PyModule_AddObject(m, "DRSUAPI_ATTID_auxiliaryClass", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_auxiliaryClass));
        PyModule_AddObject(m, "DRSUAPI_ATTID_lDAPDisplayName", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_lDAPDisplayName));
        PyModule_AddObject(m, "DRSUAPI_ATTID_name", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_name));
+       PyModule_AddObject(m, "DRSUAPI_ATTID_objectGUID", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_objectGUID));
+       PyModule_AddObject(m, "DRSUAPI_ATTID_replPropertyMetaData", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_replPropertyMetaData));
        PyModule_AddObject(m, "DRSUAPI_ATTID_userAccountControl", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_userAccountControl));
        PyModule_AddObject(m, "DRSUAPI_ATTID_badPwdCount", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_badPwdCount));
        PyModule_AddObject(m, "DRSUAPI_ATTID_codePage", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_codePage));
@@ -29181,8 +36874,10 @@ void initdrsuapi(void)
        PyModule_AddObject(m, "DRSUAPI_ATTID_trustAuthOutgoing", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_trustAuthOutgoing));
        PyModule_AddObject(m, "DRSUAPI_ATTID_userParameters", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_userParameters));
        PyModule_AddObject(m, "DRSUAPI_ATTID_profilePath", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_profilePath));
+       PyModule_AddObject(m, "DRSUAPI_ATTID_operatorCount", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_operatorCount));
        PyModule_AddObject(m, "DRSUAPI_ATTID_objectSid", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_objectSid));
        PyModule_AddObject(m, "DRSUAPI_ATTID_schemaIDGUID", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_schemaIDGUID));
+       PyModule_AddObject(m, "DRSUAPI_ATTID_adminCount", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_adminCount));
        PyModule_AddObject(m, "DRSUAPI_ATTID_comment", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_comment));
        PyModule_AddObject(m, "DRSUAPI_ATTID_accountExpires", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_accountExpires));
        PyModule_AddObject(m, "DRSUAPI_ATTID_lmPwdHistory", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_lmPwdHistory));
@@ -29198,11 +36893,13 @@ void initdrsuapi(void)
        PyModule_AddObject(m, "DRSUAPI_ATTID_systemFlags", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_systemFlags));
        PyModule_AddObject(m, "DRSUAPI_ATTID_serverReference", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_serverReference));
        PyModule_AddObject(m, "DRSUAPI_ATTID_serverReferenceBL", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_serverReferenceBL));
+       PyModule_AddObject(m, "DRSUAPI_ATTID_nonSecurityMember", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_nonSecurityMember));
        PyModule_AddObject(m, "DRSUAPI_ATTID_initialAuthIncoming", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_initialAuthIncoming));
        PyModule_AddObject(m, "DRSUAPI_ATTID_initialAuthOutgoing", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_initialAuthOutgoing));
        PyModule_AddObject(m, "DRSUAPI_ATTID_wellKnownObjects", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_wellKnownObjects));
        PyModule_AddObject(m, "DRSUAPI_ATTID_dNSHostName", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_dNSHostName));
        PyModule_AddObject(m, "DRSUAPI_ATTID_isMemberOfPartialAttributeSet", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_isMemberOfPartialAttributeSet));
+       PyModule_AddObject(m, "DRSUAPI_ATTID_managedBy", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_managedBy));
        PyModule_AddObject(m, "DRSUAPI_ATTID_userPrincipalName", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_userPrincipalName));
        PyModule_AddObject(m, "DRSUAPI_ATTID_groupType", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_groupType));
        PyModule_AddObject(m, "DRSUAPI_ATTID_servicePrincipalName", ndr_PyLong_FromUnsignedLongLong((uint32_t)DRSUAPI_ATTID_servicePrincipalName));