input: from typing import List, Dict
  
  
  def generate_ngrams(text: str, window_size: int) -> Dict[str, int]:
      """ Generates n-grams from the given text with a specified window size.
      The n-grams are generated by sliding a window of the given size over the words in the text.
      The text is first converted to lowercase and split into words. Then, for each window,
      the corresponding n-gram is generated and stored.
      The function returns a dictionary where keys are n-grams and values are their counts.
      
      >>> generate_ngrams("The quick brown fox jumps over the lazy dog", 3)
      {'the quick brown': 2,
       'quick brown fox': 2,
       'brown fox jumps': 1,
       'fox jumps over': 1,
       'jumps over the': 1,
       'over the lazy': 2,
       'the lazy dog': 1}
      """
output:     words = text.lower().split()
      ngrams = {}
      for i in range(len(words) - window_size + 1):
          ngram = ' '.join(words[i:i + window_size])
          if ngram in ngrams:
              ngrams[ngram] += 1
          else:
              ngrams[ngram] = 1
      return ngrams