docs: @Update()
     public MethodOutcome update(
           @IdParam IdDt theId, 
           @ResourceParam Patient theResource, 
           @ConditionalUrlParam String theConditionalUrl, 
           ServletRequestDetails theRequestDetails,
  			IInterceptorBroadcaster theInterceptorBroadcaster) {
  
        // If we're processing a conditional URL...
        if (isNotBlank(theConditionalUrl)) {
           
           // Pretend we've done the conditional processing. Now let's
           // notify the interceptors that an update has been performed
           // and supply the actual ID that's being updated
           IdDt actual = new IdDt("Patient", "1123");
           
        }
        
        // In a real server, perhaps we would process the conditional 
        // request differently and follow a separate path. Either way,
        // let's pretend there is some storage code here.
        theResource.setId(theId.withVersion("2"));
  
        // Notify the interceptor framework when we're about to perform an update. This is
  		// useful as the authorization interceptor will pick this event up and use it
  		// to factor into a decision about whether the operation should be allowed to proceed.
  		IBaseResource previousContents = theResource;
  		IBaseResource newContents = theResource;
  		HookParams params = new HookParams()
  			.add(IBaseResource.class, previousContents)
  			.add(IBaseResource.class, newContents)
  			.add(RequestDetails.class, theRequestDetails)
  			.add(ServletRequestDetails.class, theRequestDetails);
  		theInterceptorBroadcaster.callHooks(Pointcut.STORAGE_PRESTORAGE_RESOURCE_UPDATED, params);
  
        MethodOutcome retVal = new MethodOutcome();
        retVal.setCreated(true);
        retVal.setResource(theResource);
        return retVal;
     }