possible_cb(gqlType type, void *ctx) {
    PosCtx	pc = (PosCtx)ctx;

    if (AGOO_ERR_OK != pc->err->code) {
	return;
    }
    if (GQL_OBJECT == type->kind && has_interface(type, pc->interface)) {
	gqlValue	co;

	if (NULL == (co = gql_object_create(pc->err)) ||
	    AGOO_ERR_OK != gql_list_append(pc->err, pc->list, co)) {
	    return;
	}
	pc->child->ptr = type;
	gql_eval_sels(pc->err, pc->doc, (gqlRef)pc->child, pc->cf, pc->sel->sels, co, pc->depth);
    }
}
possible_cb(gqlType type, void *ctx) {
    PosCtx	pc = (PosCtx)ctx;

    if (AGOO_ERR_OK != pc->err->code) {
	return;
    }
    if (GQL_OBJECT == type->kind && has_interface(type, pc->interface)) {
	gqlValue	co;

	if (NULL == (co = gql_object_create(pc->err)) ||
	    AGOO_ERR_OK != gql_list_append(pc->err, pc->list, co)) {
	    return;
	}
	pc->child->ptr = type;
	gql_eval_sels(pc->err, pc->doc, (gqlRef)pc->child, pc->cf, pc->sel->sels, co, pc->depth);
    }
}