def split_Text( text, file_name, verbose = True ):
    ''' Tokenizes the *text* (from *file_name*) into sentences, and if the number of 
        sentences exceeds *max_sentences*, splits the text into smaller texts.

        Returns a list containing the original text (if no splitting was required),
        or a list containing results of the splitting (smaller texts);
    '''
    if verbose:
       print('  processing '+file_name+' ... ', end="" )
    # Tokenize text into sentences
    start = timer()
    text = text.tokenize_sentences()
    all_sentences = len(text[SENTENCES])
    end = timer()
    if verbose:
       print('  (tok time: '+format_time( end-start )+')', end="" )
    if all_sentences > max_sentences:
       # Acquire spans of length *max_sentences* from the text
       start = timer()
       i = 0
       spans = []
       len_total = 0
       while i < all_sentences:
            startSent = text[SENTENCES][i]
            endSent   = text[SENTENCES][min(i+(max_sentences-1), all_sentences-1)]
            span = (startSent[START], endSent[END])
            len_total += (span[1]-span[0])
            spans.append(span)
            i += max_sentences
       # Divide the text into spans
       text_spans = text.texts_from_spans(spans)
       assert len(text.text) >= len_total, '(!) Total spans_len must be =< than text_len: '+str(len_total)+'/'+str(len(text.text))
       new_texts  = []
       for i, small_text in enumerate( text_spans ):
           newText = Text( small_text )
           for key in text.keys():
               if key != TEXT and key != SENTENCES and key != PARAGRAPHS:
                  newText[key] = text[key]
           newText['_text_split_id']     = i
           newText['_text_split_origin'] = str(spans[i])  #  Convert it to string; Otherwise, split_by(*) may mistakenly consider 
                                                          #  it a layer and may run into error while trying to split it;
           newText['_text_split_file']   = file_name
           #print( json.dumps(newText) )
           new_texts.append( newText )
       end = timer()
       if verbose:
           print('  (split time: '+format_time( end-start )+')', end="" )
           print('  (sents: '+str(all_sentences)+', new_texts:'+str(len(new_texts))+')', end="")
           print()
       return new_texts
    else:
       if verbose:
           print('  (sents: '+str(all_sentences)+', no_split)', end=" \n")
       return [text]