let close_property where context q = function
    | Keep_opened ->
        let instances = L.pop_instances where in
        let bindings = D.pop where context in
        {
          bindings=bindings ;
          instances=instances ;
          property=q ;
        }
    | Apply_hints ->
        let instances = L.pop_instances where in
        let instances,q = L.instantiate instances q in
        if instances = []
        then {
          bindings=D.closed ;
          instances=[];
          property=D.flush where context q;
        } else {
          bindings=D.pop where context ;
          instances=instances ;
          property=q ;
        }
    | Close_context ->
        let instances = L.pop_instances where in
        let _ , q = L.instantiate instances q in
        {
          bindings=D.closed ;
          instances=[] ;
          property=D.flush where context q ;
        }