void visit_start_struct(Visitor *v, const char *name, void **obj,

                        size_t size, Error **errp)

{

    Error *err = NULL;



    if (obj) {

        assert(size);

        assert(v->type != VISITOR_OUTPUT || *obj);

    }

    v->start_struct(v, name, obj, size, &err);

    if (obj && v->type == VISITOR_INPUT) {

        assert(!err != !*obj);

    }

    error_propagate(errp, err);

}

void visit_start_struct(Visitor *v, const char *name, void **obj,

                        size_t size, Error **errp)

{

    Error *err = NULL;



    if (obj) {

        assert(size);

        assert(v->type != VISITOR_OUTPUT || *obj);

    }

    v->start_struct(v, name, obj, size, &err);

    if (obj && v->type == VISITOR_INPUT) {

        assert(!err != !*obj);

    }

    error_propagate(errp, err);

}

        assert(v->type != VISITOR_OUTPUT || *obj);     if (obj && v->type == VISITOR_INPUT) {
void FUNC_0(Visitor *VAR_0, const char *VAR_1, void **VAR_2,

                        size_t VAR_3, Error **VAR_4)

{

    Error *err = NULL;



    if (VAR_2) {

        assert(VAR_3);

        assert(VAR_0->type != VISITOR_OUTPUT || *VAR_2);

    }

    VAR_0->start_struct(VAR_0, VAR_1, VAR_2, VAR_3, &err);

    if (VAR_2 && VAR_0->type == VISITOR_INPUT) {

        assert(!err != !*VAR_2);

    }

    error_propagate(VAR_4, err);

}

void FUNC_0(Visitor *VAR_0, const char *VAR_1, void **VAR_2,
size_t VAR_3, Error **VAR_4)
{ Error *err = NULL; if (VAR_2) { assert(VAR_3); assert(VAR_0->type != VISITOR_OUTPUT || *VAR_2); } VAR_0->start_struct(VAR_0, VAR_1, VAR_2, VAR_3, &err); if (VAR_2 && VAR_0->type == VISITOR_INPUT) { assert(!err != !*VAR_2); } error_propagate(VAR_4, err); }