code: public DocumentFragment<Mutation> execute(long timeout, TimeUnit timeUnit) {
          return asyncBuilder.execute(timeout, timeUnit).toBlocking().single();
      }
docs: Perform several {@link Mutation mutation} operations inside a single existing {@link JsonDocument JSON document},
  with a specific timeout.
  The list of mutations and paths to mutate in the JSON is added through builder methods like
  {@link #arrayInsert(String, Object)}.
  
  Multi-mutations are applied as a whole, atomically at the document level. That means that if one of the mutations
  fails, none of the mutations are applied. Otherwise, all mutations can be considered successful and the whole
  operation will receive a {@link DocumentFragment} with the updated cas (and optionally {@link MutationToken}).
  
  The subdocument API has the benefit of only transmitting the fragment of the document you want to mutate
  on the wire, instead of the whole document.
  
  This operation throws under the following most notable error conditions:
  
  - The enclosing document does not exist: {@link DocumentDoesNotExistException}
  - The enclosing document is not JSON: {@link DocumentNotJsonException}
  - No mutation was defined through the builder API: {@link IllegalArgumentException}
  - A mutation spec couldn't be encoded and the whole operation was cancelled: {@link TranscodingException}
  - The multi-mutation failed: {@link MultiMutationException}
  - CAS was provided but optimistic locking failed: {@link CASMismatchException}
  
  When receiving a {@link MultiMutationException}, one can inspect the exception to find the zero-based index and
  error {@link ResponseStatus status code} of the first failing {@link Mutation}. Subsequent mutations may have
  also failed had they been attempted, but a single spec failing causes the whole operation to be cancelled.
  
  Other top-level error conditions are similar to those encountered during a document-level {@link Bucket#replace(Document)}.
  
  @param timeout the specific timeout to apply for the operation.
  @param timeUnit the time unit for the timeout.
  @return a {@link DocumentFragment} (if successful) containing updated cas metadata. Note that some individual
  results could also bear a value, like counter operations.