code: def test_cvf_incremental_training(
      initial_train_text: Text,
      additional_train_text: Text,
      initial_vocabulary_size: int,
      final_vocabulary_size: int,
      create_featurizer: Callable[..., CountVectorsFeaturizer],
      load_featurizer: Callable[..., CountVectorsFeaturizer],
      whitespace_tokenizer: WhitespaceTokenizer,
  ):
      initial_cvf = create_featurizer()
      train_message = Message(data={"text": initial_train_text})
      data = TrainingData([train_message])
  
      whitespace_tokenizer.process_training_data(data)
      initial_cvf.train(data)
  
      # Check initial vocabulary size
      initial_vocab = initial_cvf.vectorizers["text"].vocabulary_
      assert len(initial_vocab) == initial_vocabulary_size
  
      # persist and load initial cvf
      new_cvf = load_featurizer(is_finetuning=True)
  
      # Check vocabulary size again
      assert (
          len(new_cvf.vectorizers["text"].vocabulary_)
          == initial_vocabulary_size
      )
  
      additional_train_message = Message(
          data={"text": additional_train_text}
      )
      data = TrainingData([train_message, additional_train_message])
      whitespace_tokenizer.process_training_data(data)
      new_cvf.train(data)
  
      new_vocab = new_cvf.vectorizers["text"].vocabulary_
  
      # Check vocabulary size after finetuning
      assert len(new_vocab) == final_vocabulary_size
  
      # Check indices of initial vocabulary haven't changed in the new vocabulary
      for vocab_token, vocab_index in initial_vocab.items():
          assert vocab_token in new_vocab
          assert new_vocab.get(vocab_token) == vocab_index
  
imports: from typing import List, Any, Text, Dict, Callable, Optional
  import dataclasses
  import numpy
  import pytest
  import scipy.sparse
  from rasa.engine.graph import ExecutionContext
  from rasa.engine.storage.resource import Resource
  from rasa.engine.storage.storage import ModelStorage
  from rasa.nlu.tokenizers.spacy_tokenizer import SpacyTokenizer
  from rasa.nlu.tokenizers.whitespace_tokenizer import WhitespaceTokenizer
  from rasa.nlu.constants import TOKENS_NAMES, SPACY_DOCS
  from rasa.nlu.utils.spacy_utils import SpacyModel
  from rasa.shared.nlu.constants import TEXT, INTENT, RESPONSE, ACTION_TEXT, ACTION_NAME
  from rasa.nlu.tokenizers.tokenizer import Token
  from rasa.shared.nlu.training_data.training_data import TrainingData
  from rasa.shared.nlu.training_data.message import Message
  from rasa.nlu.featurizers.sparse_featurizer.count_vectors_featurizer import CountVectorsFeaturizer
label_desc: Use image node_id 16 for calling a global function with example usage: test_cvf_incremental_training(initial_train_text, additional_train_text, initial_vocabulary_size, final_vocabulary_size, create_featurizer, load_featurizer, whitespace_tokenizer) without return types