def METHOD_NAME(self):
    keys = list(self.keys())
    enums = obj()
    for k in keys:
        v = self[k]
        if isinstance(k,str) and '.' in k and k.split('.',1)[1].isdigit():
            name,index = k.split('.',1)
            index = int(index)
            if not name in enums:
                enums[name] = QEXML()
            #end if
            enums[name][index] = v
            del self[k]
            continue
        #end if
        if isinstance(v,QEXML):
            if len(set(v.keys())-self.array_keys)==0:
                a = array(v._value)
                if len(a)==1:
                    a = a[0]
                elif 'columns' in v and v.size%v.columns==0:
                    a.shape = v.size//v.columns,v.columns
                #end if
                self[k] = a
            else:
                v.METHOD_NAME()
            #end if
        #end if
    #end for
    for k,v in enums.items():
        self[k] = v
        v.METHOD_NAME()
    #end for
    if len(self._value)==0:
        del self._value
    elif not 'value' in self:
        if len(self._value)==1:
            self.value = self._value[0]
        else:
            self.value = array(self._value)
        #end if
        del self._value
    else:
        if len(self._value)==1:
            self._value = self._value[0]
        else:
            self._value = array(self._value)
        #end if
    #end if