'Returns a list of lists or strings, representing the code body.
Each list is a block, each string is a statement.'

def get_lines(self):

    code = [self.FILE_HEADER.strip()]
    for model_class in self._queue_models(self.models, context=self.context):
        msg = ('Processing    model:    %s\n' % model_class.model.__name__)
        self.stderr.write(msg)
        code.append(('                #    ' + msg))
        code.append(model_class.import_lines)
        code.append('')
        code.append(model_class.lines)
    for model in self.models:
        msg = ('Re-processing    model:    %s\n' % model.model.__name__)
        self.stderr.write(msg)
        code.append(('                #    ' + msg))
        for instance in model.instances:
            if (instance.waiting_list or instance.many_to_many_waiting_list):
                code.append(instance.get_lines(force=True))
    code.insert(1, '                #    Initial    Imports')
    code.insert(2, '')
    for (key, value) in self.context['__extra_imports'].items():
        code.insert(2, ('                from    %s    import    %s' % (value, key)))
    return code
