recursive-open-struct