 
   ++ sessionContext.revisions[inception]
   sessionContext.declarations.pop()
-
-  while sessionContext.doneProvisions & (2 << (sessionContext.virtualParameters.length - 1))
+  sessionContext.syncState.virtualParameterDeclarations.pop()
+
+  if sessionContext.doneProvisions & (2 << (sessionContext.virtualParameters.length - 1))
     doneProvisions = sessionContext.virtualParameters.pop()
     sessionContext.revisions.pop()
-    sessionContext.declarations.pop()
     sessionContext.doneProvisions &= (2 << sessionContext.virtualParameters.length) - 1
     rev = sessionContext.revisions[sessionContext.revisions.length - 1]
     sessionContext.deviceData.timestamps.collapse(rev + 1)

    for k of sessionContext.extensionsCache
      if rev < Number(k.split(':', 1)[0])
        delete sessionContext.extensionsCache[k]

  sessionContext.syncState.virtualParameterDeclarations.length = sessionContext.declarations.length

  return rpcRequest(sessionContext, null, callback)


          provisions ?= []
          provisions.push([declaration[0][1], undefined, {value: val}])

  return provisions


