                                     stack_stop_char.pop()
                                     if stack_stop_char.length is 0
                                         element.body = @extract_data_from_query
+                                            size_stack: size_stack
                                             query: query.slice body_start, i
                                             context: element.context
                                             position: position+body_start
+                                        if element.body is null
+                                            return null
                                         element.complete = true
                                         stack.push element
+                                        size_stack++
+                                        if size_stack > @max_size_stack
+                                            return null
                                         element =
                                             type: null
                                             context: context

                    element.position = position+start
                    element.complete = false
                stack.push element
            return stack

        # Decide if we have to show a suggestion or a description

                                    stack_stop_char.pop()
                                    if stack_stop_char.length is 0
                                        # We just reach a ], it's the end of the object
                                        body = @extract_data_from_query
                                            size_stack: size_stack
                                            query: query.slice entry_start, i
                                            context: element.context
                                            position: position+entry_start
                                        if body is null
                                            return null
                                        new_element =
                                            type: 'array_entry'
                                            complete: true
                                            body: body
                                        if new_element.body.length > 0
                                            element.body.push new_element
                                            size_stack++
                                            if size_stack > @max_size_stack
                                                return null
                                        continue

                            if stack_stop_char.length is 1 and char is ','
                                body = @extract_data_from_query
                                    size_stack: size_stack
                                    query: query.slice entry_start, i
                                    context: element.context
                                    position: position+entry_start
                                if body is null
                                    return null
                                new_element =
                                    type: 'array_entry'
                                    complete: true
                                    body: body
                                if new_element.body.length > 0
                                    element.body.push new_element
                                    size_stack++
                                    if size_stack > @max_size_stack
                                        return null
                                entry_start = i+1

            # We just reached the end, let's try to find the type of the incomplete element
