/// <exception cref="NBoilerpipePortable.BoilerpipeProcessingException"></exception>
		public bool Process(TextDocument doc)
		{
			bool changes = false;
			IList<TextBlock> blocks = doc.GetTextBlocks();
			IList<TextBlock> blocksNew = new List<TextBlock>();
			foreach (TextBlock tb in blocks)
			{
				string text = tb.GetText();
				string[] paragraphs = text.Split('[', '\n', '\r', ']', '+');
				if (paragraphs.Length < 2)
				{
					blocksNew.Add(tb);
					continue;
				}
				bool isContent = tb.IsContent();
				ICollection<string> labels = tb.GetLabels();
				foreach (string p in paragraphs)
				{
					TextBlock tbP = new TextBlock(p);
					tbP.SetIsContent(isContent);
					tbP.AddLabels(labels);
                    blocksNew.Add(tbP);
					changes = true;
				}
			}
			if (changes)
			{
				blocks.Clear();
                foreach (var block in blocksNew)
                    blocks.Add(block);
			}
			return changes;
		}
        protected void AddTextBlock (TextBlock tb)
		{
			foreach (int l in fontSizeStack) {
				tb.AddLabels ("font-" + l);
				break;
			}
			
			foreach (List<LabelAction> labels in labelStacks) {
				if (labels != null) {
					foreach (LabelAction label in labels) {
						label.AddTo (tb);
					}
				}
			}
			textBlocks.Add (tb);
		}