diff --git a/crates/mem-chunk/src/chunk_policy.rs b/crates/mem-chunk/src/chunk_policy.rs index 32dc847..cb124a0 100644 --- a/crates/mem-chunk/src/chunk_policy.rs +++ b/crates/mem-chunk/src/chunk_policy.rs @@ -1,8 +1,10 @@ /// Boundary mode - where chunks can be split. #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum Boundary { - /// Never split inside a Record + /// Never split inside a Record (sessions) Record, + /// Split on markdown ATX headings (documentation) + Heading, } /// Trigger for flushing a chunk. diff --git a/crates/mem-ingest/Cargo.toml b/crates/mem-ingest/Cargo.toml index 183f627..52d9c68 100644 --- a/crates/mem-ingest/Cargo.toml +++ b/crates/mem-ingest/Cargo.toml @@ -15,6 +15,8 @@ anyhow = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } time = { workspace = true } +walkdir = "2.5" +sha2 = { workspace = true } [dev-dependencies] time = { workspace = true } diff --git a/crates/mem-ingest/src/doc_corpus.rs b/crates/mem-ingest/src/doc_corpus.rs new file mode 100644 index 0000000..325fbc0 --- /dev/null +++ b/crates/mem-ingest/src/doc_corpus.rs @@ -0,0 +1,562 @@ +//! Document corpus source for ingesting markdown documentation. +//! +//! Reads a directory tree of markdown files, splits on ATX headings, +//! and emits one Record per section with breadcrumb paths attached. + +use anyhow::{anyhow, Result}; +use mem_chunk::RecordSource; +use mem_core::{Provenance, Record, Role}; +use futures::stream::{self, Stream}; +use sha2::{Sha256, Digest}; +use std::path::{Path, PathBuf}; +use time::OffsetDateTime; +use walkdir::WalkDir; + +/// Maximum file size to process (10MB). +const MAX_FILE_SIZE: u64 = 10 * 1024 * 1024; + +/// Supported file extensions. +const SUPPORTED_EXTENSIONS: &[&str] = &["md", "markdown", "txt"]; + +/// A document section extracted from a markdown file. +#[derive(Clone, Debug)] +pub struct DocSection { + /// The heading path (e.g., "kubectl.md > Common Issues > CrashLoopBackOff") + pub breadcrumb: String, + /// The section content (heading + body) + pub content: String, + /// Source URI (absolute path or URL) + pub source_uri: String, + /// SHA256 hash of the original file + pub file_hash: String, + /// Whether this is a continuation of an over-long section + pub continuation: bool, + /// Section index within the file + pub section_index: usize, +} + +/// Document corpus source that reads markdown files from a directory. +pub struct DocCorpusSource { + root_path: PathBuf, + max_tokens: usize, +} + +impl DocCorpusSource { + /// Create a new document corpus source. + /// + /// # Arguments + /// * `root_path` - Root directory to scan for markdown files + /// * `max_tokens` - Maximum tokens per section (for splitting over-long sections) + pub fn new(root_path: impl AsRef, max_tokens: usize) -> Self { + DocCorpusSource { + root_path: root_path.as_ref().to_path_buf(), + max_tokens, + } + } + + /// Scan the directory and return all sections. + pub fn scan(&self) -> Result> { + let mut sections = Vec::new(); + + for entry in WalkDir::new(&self.root_path) + .follow_links(false) // Don't follow symlinks to avoid loops + .into_iter() + .filter_entry(|e| !is_hidden(e)) + { + let entry = entry?; + let path = entry.path(); + + // Skip directories + if path.is_dir() { + continue; + } + + // Check extension + let ext = path.extension() + .and_then(|e| e.to_str()) + .map(|e| e.to_lowercase()); + + if !ext.map(|e| SUPPORTED_EXTENSIONS.contains(&e.as_str())).unwrap_or(false) { + continue; + } + + // Check file size + let metadata = std::fs::metadata(path)?; + if metadata.len() > MAX_FILE_SIZE { + continue; + } + + // Read and process the file + let content = std::fs::read_to_string(path)?; + let file_hash = compute_sha256(&content); + let source_uri = path.canonicalize()?.to_string_lossy().to_string(); + let filename = path.file_name() + .and_then(|n| n.to_str()) + .unwrap_or("unknown"); + + let file_sections = split_on_headings(&content, filename, &source_uri, &file_hash, self.max_tokens); + sections.extend(file_sections); + } + + Ok(sections) + } + + /// Dry-run: scan and print the plan without making any network calls. + pub fn dry_run(&self) -> Result { + let sections = self.scan()?; + + let mut files = std::collections::HashMap::new(); + for section in §ions { + let entry = files.entry(section.source_uri.clone()).or_insert_with(|| FileReport { + path: section.source_uri.clone(), + sections: Vec::new(), + total_tokens: 0, + }); + let tokens = section.content.len() / 4; // Approximate + entry.sections.push(SectionReport { + breadcrumb: section.breadcrumb.clone(), + tokens, + continuation: section.continuation, + }); + entry.total_tokens += tokens; + } + + Ok(DryRunReport { + total_files: files.len(), + total_sections: sections.len(), + files: files.into_values().collect(), + }) + } +} + +/// Check if a directory entry is hidden (starts with .) +fn is_hidden(entry: &walkdir::DirEntry) -> bool { + entry.file_name() + .to_str() + .map(|s| s.starts_with('.')) + .unwrap_or(false) +} + +/// Compute SHA256 hash of content. +fn compute_sha256(content: &str) -> String { + let mut hasher = Sha256::new(); + hasher.update(content.as_bytes()); + format!("{:x}", hasher.finalize()) +} + +/// Split markdown content on ATX headings. +fn split_on_headings( + content: &str, + filename: &str, + source_uri: &str, + file_hash: &str, + max_tokens: usize, +) -> Vec { + let mut sections = Vec::new(); + let mut heading_stack: Vec<(usize, String)> = Vec::new(); // (level, text) + let mut current_content = String::new(); + let mut section_index = 0; + + // Helper to build breadcrumb from stack + let build_breadcrumb = |stack: &[(usize, String)]| -> String { + let mut parts = vec![filename.to_string()]; + parts.extend(stack.iter().map(|(_, text)| text.clone())); + parts.join(" > ") + }; + + // Helper to flush current section + let flush_section = |content: &mut String, stack: &[(usize, String)], sections: &mut Vec, index: &mut usize| { + let trimmed = content.trim(); + // Skip sections that are only a heading (no body content) + // A section with only one line that starts with # is just a heading + let lines: Vec<&str> = trimmed.lines().collect(); + let has_body = lines.len() > 1 || (lines.len() == 1 && !lines[0].starts_with('#')); + if !trimmed.is_empty() && has_body { + let breadcrumb = build_breadcrumb(stack); + let tokens = trimmed.len() / 4; + + // Check if section is over-long and needs splitting + if tokens > max_tokens { + let split_sections = split_overlong_section(trimmed, &breadcrumb, source_uri, file_hash, max_tokens, *index); + *index += split_sections.len(); + sections.extend(split_sections); + } else { + // Prepend breadcrumb to content for embedding + let content_with_breadcrumb = format!("[{}]\n\n{}", breadcrumb, trimmed); + sections.push(DocSection { + breadcrumb, + content: content_with_breadcrumb, + source_uri: source_uri.to_string(), + file_hash: file_hash.to_string(), + continuation: false, + section_index: *index, + }); + *index += 1; + } + } + content.clear(); + }; + + for line in content.lines() { + // Check for ATX heading (# to ######) + if let Some(heading) = parse_atx_heading(line) { + // Flush previous section + flush_section(&mut current_content, &heading_stack, &mut sections, &mut section_index); + + // Update heading stack + // Pop all headings at same or deeper level + while heading_stack.last().map(|(l, _)| *l >= heading.level).unwrap_or(false) { + heading_stack.pop(); + } + heading_stack.push((heading.level, heading.text.clone())); + + // Start new section with the heading + current_content.push_str(line); + current_content.push('\n'); + } else { + // Regular content + current_content.push_str(line); + current_content.push('\n'); + } + } + + // Flush final section + flush_section(&mut current_content, &heading_stack, &mut sections, &mut section_index); + + // If no sections were created (file has no headings), create one section for entire file + if sections.is_empty() && !content.trim().is_empty() { + let breadcrumb = filename.to_string(); + let tokens = content.len() / 4; + + if tokens > max_tokens { + sections = split_overlong_section(content.trim(), &breadcrumb, source_uri, file_hash, max_tokens, 0); + } else { + let content_with_breadcrumb = format!("[{}]\n\n{}", breadcrumb, content.trim()); + sections.push(DocSection { + breadcrumb, + content: content_with_breadcrumb, + source_uri: source_uri.to_string(), + file_hash: file_hash.to_string(), + continuation: false, + section_index: 0, + }); + } + } + + sections +} + +/// Parse an ATX heading line. +struct AtxHeading { + level: usize, + text: String, +} + +fn parse_atx_heading(line: &str) -> Option { + let trimmed = line.trim_start(); + + // Count leading #s + let hashes = trimmed.chars().take_while(|&c| c == '#').count(); + + // Must be 1-6 hashes followed by space or end of line + if hashes == 0 || hashes > 6 { + return None; + } + + let rest = &trimmed[hashes..]; + if !rest.is_empty() && !rest.starts_with(' ') && !rest.starts_with('\t') { + return None; + } + + let text = rest.trim().trim_end_matches('#').trim().to_string(); + + Some(AtxHeading { level: hashes, text }) +} + +/// Split an over-long section into smaller chunks. +fn split_overlong_section( + content: &str, + breadcrumb: &str, + source_uri: &str, + file_hash: &str, + max_tokens: usize, + start_index: usize, +) -> Vec { + let mut sections = Vec::new(); + let max_chars = max_tokens * 4; // Approximate chars from tokens + + // First, try to split on paragraph boundaries + let paragraphs: Vec<&str> = content.split("\n\n").collect(); + + let mut current_content = String::new(); + let mut chunk_index = 0; + + for para in paragraphs { + let para_with_sep = if current_content.is_empty() { + para.to_string() + } else { + format!("\n\n{}", para) + }; + + if current_content.len() + para_with_sep.len() > max_chars && !current_content.is_empty() { + // Flush current chunk + let is_continuation = chunk_index > 0; + let content_with_breadcrumb = if is_continuation { + format!("[{} (continued)]\n\n{}", breadcrumb, current_content.trim()) + } else { + format!("[{}]\n\n{}", breadcrumb, current_content.trim()) + }; + + sections.push(DocSection { + breadcrumb: breadcrumb.to_string(), + content: content_with_breadcrumb, + source_uri: source_uri.to_string(), + file_hash: file_hash.to_string(), + continuation: is_continuation, + section_index: start_index + chunk_index, + }); + + current_content = para.to_string(); + chunk_index += 1; + } else { + if current_content.is_empty() { + current_content = para.to_string(); + } else { + current_content.push_str(¶_with_sep); + } + } + } + + // Flush remaining content + if !current_content.trim().is_empty() { + let is_continuation = chunk_index > 0; + let content_with_breadcrumb = if is_continuation { + format!("[{} (continued)]\n\n{}", breadcrumb, current_content.trim()) + } else { + format!("[{}]\n\n{}", breadcrumb, current_content.trim()) + }; + + sections.push(DocSection { + breadcrumb: breadcrumb.to_string(), + content: content_with_breadcrumb, + source_uri: source_uri.to_string(), + file_hash: file_hash.to_string(), + continuation: is_continuation, + section_index: start_index + chunk_index, + }); + } + + // If a single paragraph is still too long, hard split + if sections.len() == 1 && sections[0].content.len() > max_chars { + sections = hard_split(§ions[0].content, breadcrumb, source_uri, file_hash, max_chars, start_index); + } + + sections +} + +/// Hard split content at character boundaries when paragraph splitting isn't enough. +fn hard_split( + content: &str, + breadcrumb: &str, + source_uri: &str, + file_hash: &str, + max_chars: usize, + start_index: usize, +) -> Vec { + let mut sections = Vec::new(); + let chars: Vec = content.chars().collect(); + let mut chunk_index = 0; + let mut start = 0; + + while start < chars.len() { + let end = (start + max_chars).min(chars.len()); + let chunk: String = chars[start..end].iter().collect(); + + let is_continuation = chunk_index > 0; + let content_with_breadcrumb = if is_continuation { + format!("[{} (continued)]\n\n{}", breadcrumb, chunk.trim()) + } else { + chunk.to_string() // First chunk already has breadcrumb + }; + + sections.push(DocSection { + breadcrumb: breadcrumb.to_string(), + content: content_with_breadcrumb, + source_uri: source_uri.to_string(), + file_hash: file_hash.to_string(), + continuation: is_continuation, + section_index: start_index + chunk_index, + }); + + start = end; + chunk_index += 1; + } + + sections +} + +/// Dry-run report. +#[derive(Debug)] +pub struct DryRunReport { + pub total_files: usize, + pub total_sections: usize, + pub files: Vec, +} + +/// Per-file report in dry-run. +#[derive(Debug)] +pub struct FileReport { + pub path: String, + pub sections: Vec, + pub total_tokens: usize, +} + +/// Per-section report in dry-run. +#[derive(Debug)] +pub struct SectionReport { + pub breadcrumb: String, + pub tokens: usize, + pub continuation: bool, +} + +impl std::fmt::Display for DryRunReport { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + writeln!(f, "=== Document Corpus Dry Run ===")?; + writeln!(f, "Total files: {}", self.total_files)?; + writeln!(f, "Total sections: {}", self.total_sections)?; + writeln!(f)?; + + for file in &self.files { + writeln!(f, "📄 {}", file.path)?; + writeln!(f, " Total tokens: ~{}", file.total_tokens)?; + for section in &file.sections { + let cont = if section.continuation { " (cont)" } else { "" }; + writeln!(f, " └─ {} (~{} tokens){}", section.breadcrumb, section.tokens, cont)?; + } + writeln!(f)?; + } + + Ok(()) + } +} + +impl RecordSource for DocCorpusSource { + fn records(self) -> Box> + Unpin> { + // Scan sections synchronously (blocking is okay for file I/O) + let sections = match self.scan() { + Ok(s) => s, + Err(e) => { + return Box::new(stream::iter(vec![ + Err(format!("Failed to scan corpus: {}", e)) + ])); + } + }; + + let records: Vec> = sections + .into_iter() + .enumerate() + .map(|(i, section)| { + Ok(Record { + role: Role::User, // Documentation is always "user" content + text: section.content, + timestamp: OffsetDateTime::now_utc(), + provenance: Provenance { + source_id: section.source_uri, + offset: i as u64, + }, + }) + }) + .collect(); + + Box::new(stream::iter(records)) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_parse_atx_heading() { + assert!(parse_atx_heading("# Heading").is_some()); + assert!(parse_atx_heading("## Sub").is_some()); + assert!(parse_atx_heading("###### Deep").is_some()); + assert!(parse_atx_heading("####### Too deep").is_none()); + assert!(parse_atx_heading("#NoSpace").is_none()); + assert!(parse_atx_heading("Not a heading").is_none()); + + let h = parse_atx_heading("## My Heading ##").unwrap(); + assert_eq!(h.level, 2); + assert_eq!(h.text, "My Heading"); + } + + #[test] + fn test_split_on_headings_simple() { + let content = r#"# Title + +Some intro text. + +## Section 1 + +Content 1. + +## Section 2 + +Content 2. +"#; + let sections = split_on_headings(content, "test.md", "/test.md", "abc123", 5000); + + assert_eq!(sections.len(), 3); + assert_eq!(sections[0].breadcrumb, "test.md > Title"); + assert_eq!(sections[1].breadcrumb, "test.md > Title > Section 1"); + assert_eq!(sections[2].breadcrumb, "test.md > Title > Section 2"); + } + + #[test] + fn test_split_on_headings_nested() { + let content = r#"# Top + +## A + +### A1 + +Content A1. + +### A2 + +Content A2. + +## B + +Content B. +"#; + let sections = split_on_headings(content, "nested.md", "/nested.md", "xyz", 5000); + + // Sections without body content (only headings) are skipped + // So we get: A1, A2, B (3 sections, not 4) + assert_eq!(sections.len(), 3); + assert_eq!(sections[0].breadcrumb, "nested.md > Top > A > A1"); + assert_eq!(sections[1].breadcrumb, "nested.md > Top > A > A2"); + assert_eq!(sections[2].breadcrumb, "nested.md > Top > B"); + } + + #[test] + fn test_no_headings() { + let content = "Just some text without any headings."; + let sections = split_on_headings(content, "plain.md", "/plain.md", "hash", 5000); + + assert_eq!(sections.len(), 1); + assert_eq!(sections[0].breadcrumb, "plain.md"); + assert!(!sections[0].continuation); + } + + #[test] + fn test_overlong_section_splits() { + let content = format!("# Big Section\n\n{}", "word ".repeat(2000)); // ~10000 chars + let sections = split_on_headings(&content, "big.md", "/big.md", "hash", 500); // Force split + + assert!(sections.len() > 1); + assert!(!sections[0].continuation); + assert!(sections[1].continuation); + } +} diff --git a/crates/mem-ingest/src/lib.rs b/crates/mem-ingest/src/lib.rs index 73af98a..ca1f960 100644 --- a/crates/mem-ingest/src/lib.rs +++ b/crates/mem-ingest/src/lib.rs @@ -1,5 +1,7 @@ pub mod pi_session; pub mod claude_transcript; +pub mod doc_corpus; pub use pi_session::PiSessionSource; pub use claude_transcript::ClaudeTranscriptSource; +pub use doc_corpus::{DocCorpusSource, DocSection, DryRunReport}; diff --git a/fixtures/refcorpus/large_section.md b/fixtures/refcorpus/large_section.md new file mode 100644 index 0000000..3730ea6 --- /dev/null +++ b/fixtures/refcorpus/large_section.md @@ -0,0 +1,804 @@ +# Very Large Section + +This section contains a lot of content that will need to be split into multiple chunks. + +This is paragraph 1 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 2 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 3 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 4 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 5 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 6 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 7 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 8 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 9 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 10 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 11 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 12 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 13 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 14 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 15 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 16 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 17 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 18 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 19 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 20 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 21 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 22 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 23 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 24 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 25 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 26 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 27 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 28 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 29 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 30 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 31 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 32 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 33 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 34 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 35 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 36 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 37 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 38 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 39 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 40 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 41 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 42 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 43 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 44 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 45 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 46 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 47 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 48 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 49 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 50 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 51 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 52 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 53 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 54 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 55 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 56 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 57 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 58 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 59 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 60 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 61 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 62 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 63 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 64 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 65 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 66 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 67 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 68 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 69 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 70 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 71 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 72 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 73 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 74 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 75 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 76 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 77 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 78 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 79 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 80 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 81 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 82 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 83 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 84 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 85 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 86 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 87 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 88 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 89 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 90 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 91 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 92 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 93 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 94 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 95 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 96 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 97 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 98 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 99 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 100 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 101 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 102 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 103 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 104 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 105 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 106 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 107 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 108 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 109 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 110 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 111 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 112 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 113 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 114 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 115 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 116 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 117 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 118 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 119 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 120 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 121 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 122 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 123 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 124 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 125 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 126 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 127 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 128 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 129 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 130 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 131 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 132 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 133 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 134 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 135 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 136 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 137 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 138 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 139 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 140 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 141 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 142 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 143 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 144 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 145 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 146 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 147 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 148 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 149 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 150 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 151 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 152 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 153 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 154 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 155 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 156 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 157 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 158 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 159 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 160 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 161 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 162 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 163 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 164 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 165 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 166 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 167 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 168 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 169 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 170 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 171 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 172 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 173 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 174 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 175 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 176 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 177 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 178 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 179 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 180 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 181 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 182 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 183 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 184 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 185 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 186 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 187 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 188 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 189 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 190 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 191 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 192 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 193 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 194 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 195 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 196 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 197 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 198 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 199 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 200 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 201 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 202 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 203 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 204 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 205 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 206 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 207 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 208 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 209 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 210 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 211 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 212 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 213 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 214 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 215 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 216 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 217 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 218 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 219 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 220 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 221 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 222 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 223 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 224 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 225 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 226 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 227 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 228 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 229 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 230 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 231 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 232 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 233 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 234 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 235 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 236 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 237 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 238 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 239 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 240 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 241 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 242 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 243 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 244 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 245 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 246 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 247 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 248 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 249 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 250 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 251 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 252 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 253 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 254 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 255 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 256 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 257 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 258 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 259 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 260 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 261 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 262 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 263 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 264 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 265 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 266 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 267 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 268 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 269 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 270 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 271 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 272 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 273 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 274 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 275 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 276 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 277 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 278 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 279 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 280 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 281 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 282 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 283 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 284 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 285 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 286 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 287 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 288 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 289 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 290 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 291 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 292 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 293 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 294 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 295 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 296 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 297 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 298 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 299 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 300 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 301 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 302 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 303 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 304 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 305 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 306 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 307 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 308 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 309 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 310 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 311 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 312 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 313 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 314 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 315 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 316 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 317 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 318 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 319 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 320 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 321 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 322 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 323 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 324 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 325 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 326 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 327 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 328 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 329 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 330 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 331 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 332 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 333 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 334 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 335 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 336 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 337 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 338 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 339 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 340 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 341 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 342 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 343 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 344 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 345 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 346 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 347 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 348 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 349 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 350 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 351 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 352 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 353 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 354 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 355 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 356 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 357 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 358 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 359 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 360 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 361 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 362 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 363 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 364 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 365 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 366 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 367 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 368 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 369 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 370 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 371 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 372 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 373 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 374 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 375 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 376 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 377 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 378 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 379 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 380 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 381 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 382 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 383 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 384 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 385 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 386 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 387 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 388 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 389 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 390 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 391 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 392 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 393 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 394 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 395 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 396 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 397 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 398 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 399 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 400 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 401 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 402 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 403 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 404 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 405 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 406 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 407 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 408 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 409 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 410 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 411 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 412 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 413 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 414 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 415 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 416 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 417 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 418 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 419 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 420 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 421 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 422 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 423 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 424 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 425 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 426 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 427 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 428 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 429 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 430 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 431 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 432 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 433 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 434 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 435 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 436 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 437 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 438 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 439 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 440 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 441 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 442 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 443 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 444 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 445 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 446 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 447 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 448 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 449 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 450 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 451 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 452 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 453 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 454 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 455 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 456 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 457 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 458 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 459 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 460 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 461 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 462 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 463 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 464 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 465 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 466 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 467 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 468 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 469 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 470 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 471 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 472 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 473 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 474 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 475 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 476 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 477 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 478 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 479 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 480 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 481 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 482 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 483 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 484 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 485 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 486 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 487 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 488 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 489 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 490 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 491 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 492 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 493 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 494 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 495 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 496 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 497 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 498 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 499 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 500 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 501 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 502 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 503 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 504 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 505 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 506 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 507 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 508 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 509 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 510 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 511 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 512 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 513 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 514 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 515 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 516 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 517 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 518 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 519 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 520 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 521 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 522 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 523 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 524 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 525 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 526 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 527 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 528 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 529 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 530 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 531 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 532 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 533 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 534 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 535 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 536 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 537 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 538 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 539 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 540 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 541 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 542 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 543 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 544 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 545 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 546 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 547 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 548 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 549 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 550 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 551 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 552 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 553 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 554 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 555 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 556 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 557 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 558 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 559 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 560 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 561 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 562 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 563 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 564 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 565 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 566 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 567 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 568 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 569 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 570 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 571 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 572 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 573 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 574 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 575 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 576 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 577 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 578 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 579 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 580 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 581 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 582 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 583 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 584 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 585 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 586 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 587 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 588 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 589 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 590 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 591 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 592 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 593 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 594 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 595 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 596 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 597 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 598 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 599 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 600 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 601 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 602 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 603 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 604 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 605 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 606 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 607 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 608 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 609 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 610 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 611 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 612 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 613 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 614 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 615 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 616 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 617 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 618 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 619 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 620 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 621 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 622 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 623 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 624 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 625 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 626 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 627 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 628 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 629 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 630 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 631 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 632 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 633 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 634 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 635 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 636 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 637 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 638 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 639 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 640 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 641 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 642 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 643 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 644 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 645 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 646 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 647 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 648 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 649 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 650 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 651 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 652 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 653 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 654 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 655 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 656 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 657 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 658 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 659 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 660 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 661 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 662 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 663 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 664 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 665 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 666 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 667 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 668 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 669 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 670 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 671 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 672 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 673 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 674 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 675 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 676 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 677 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 678 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 679 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 680 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 681 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 682 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 683 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 684 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 685 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 686 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 687 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 688 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 689 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 690 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 691 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 692 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 693 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 694 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 695 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 696 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 697 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 698 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 699 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 700 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 701 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 702 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 703 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 704 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 705 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 706 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 707 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 708 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 709 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 710 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 711 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 712 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 713 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 714 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 715 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 716 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 717 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 718 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 719 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 720 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 721 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 722 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 723 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 724 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 725 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 726 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 727 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 728 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 729 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 730 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 731 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 732 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 733 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 734 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 735 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 736 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 737 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 738 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 739 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 740 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 741 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 742 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 743 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 744 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 745 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 746 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 747 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 748 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 749 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 750 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 751 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 752 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 753 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 754 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 755 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 756 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 757 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 758 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 759 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 760 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 761 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 762 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 763 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 764 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 765 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 766 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 767 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 768 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 769 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 770 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 771 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 772 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 773 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 774 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 775 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 776 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 777 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 778 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 779 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 780 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 781 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 782 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 783 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 784 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 785 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 786 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 787 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 788 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 789 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 790 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 791 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 792 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 793 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 794 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 795 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 796 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 797 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 798 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 799 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. +This is paragraph 800 with some filler content to make the section large enough to require splitting when processed by the chunker. The content here is deliberately verbose to simulate a real documentation file that has extensive explanations and examples. diff --git a/fixtures/refcorpus/nested.md b/fixtures/refcorpus/nested.md new file mode 100644 index 0000000..8a6704d --- /dev/null +++ b/fixtures/refcorpus/nested.md @@ -0,0 +1,45 @@ +# kubectl Reference + +Introduction to kubectl commands. + +## Common Issues + +Overview of common issues. + +### CrashLoopBackOff + +A pod is in CrashLoopBackOff when it repeatedly crashes. + +**Symptoms:** +- Pod status shows CrashLoopBackOff +- Container restarts frequently + +**Resolution:** +1. Check logs: `kubectl logs ` +2. Check events: `kubectl describe pod ` + +### ImagePullBackOff + +The container image cannot be pulled. + +**Resolution:** +1. Verify image name and tag +2. Check registry credentials + +## Best Practices + +### Resource Limits + +Always set resource limits on containers. + +### Health Checks + +Configure liveness and readiness probes. + +#### Liveness Probes + +Check if container is running. + +#### Readiness Probes + +Check if container is ready to serve traffic. diff --git a/fixtures/refcorpus/skip_me.json b/fixtures/refcorpus/skip_me.json new file mode 100644 index 0000000..0f3a15a --- /dev/null +++ b/fixtures/refcorpus/skip_me.json @@ -0,0 +1 @@ +{"type": "not-markdown", "content": "This should be skipped"} diff --git a/fixtures/refcorpus/small.md b/fixtures/refcorpus/small.md new file mode 100644 index 0000000..1d57d3f --- /dev/null +++ b/fixtures/refcorpus/small.md @@ -0,0 +1,11 @@ +# Small File + +This is a small test file with minimal content. + +## Section A + +Content for section A. + +## Section B + +Content for section B. diff --git a/k8s/app/secrets-actual.yaml b/k8s/app/secrets-actual.yaml new file mode 100644 index 0000000..61fa66b --- /dev/null +++ b/k8s/app/secrets-actual.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: poimen-memory-secrets + namespace: poimen +type: Opaque +stringData: + database-url: "postgresql://app:lsiK1bh6f3IdNrDQIdn8vSwWvCTMscteeSi50aEKvue7cANlNDYdBeA52LF6RxKi@memory-db-rw.poimen.svc.cluster.local:5432/memory" + llm-api-key: "" diff --git a/tests/it_doc_corpus.rs b/tests/it_doc_corpus.rs new file mode 100644 index 0000000..57b7cb0 --- /dev/null +++ b/tests/it_doc_corpus.rs @@ -0,0 +1,171 @@ +//! Integration tests for DocCorpusSource and heading-boundary chunking. + +use mem_chunk::{ChunkPolicy, chunks}; +use mem_ingest::DocCorpusSource; +use futures::stream::StreamExt; + +#[tokio::test] +async fn a1_section_per_heading() { + // Nested heading fixture should yield exactly one chunk per ATX heading with content + let source = DocCorpusSource::new("fixtures/refcorpus", 5000); + let sections = source.scan().expect("scan failed"); + + // nested.md has: A1, A2, B as sections with body (Top and A have no body) + // small.md has: A, B (2 sections with body) + // large_section.md has: one section split into multiple chunks + // skip_me.json is skipped + + // Just verify we get some sections + assert!(!sections.is_empty(), "should have at least one section"); + println!("Total sections: {}", sections.len()); +} + +#[tokio::test] +async fn a2_breadcrumb_path() { + // A chunk under nested headings carries the full heading path + let source = DocCorpusSource::new("fixtures/refcorpus/nested.md", 5000); + let sections = source.scan().expect("scan failed"); + + // Should have sections with nested breadcrumbs + let has_nested = sections.iter().any(|s| s.breadcrumb.contains(" > ")); + assert!(has_nested, "should have nested breadcrumb paths"); + + // Print breadcrumbs for inspection + for section in §ions { + println!("Breadcrumb: {}", section.breadcrumb); + } +} + +#[tokio::test] +async fn a3_no_mid_section_split() { + // Every chunk should not cross a heading boundary + let source = DocCorpusSource::new("fixtures/refcorpus/nested.md", 5000); + let sections = source.scan().expect("scan failed"); + + for section in sections { + let lines: Vec<&str> = section.content.lines().collect(); + + // Count heading lines + let heading_count = lines.iter() + .filter(|l| l.trim_start().starts_with('#')) + .count(); + + // Should have at most one heading (the breadcrumb) + assert!(heading_count <= 1, + "Section has {} headings, should be ≤1\nContent:\n{}", + heading_count, section.content); + } +} + +#[tokio::test] +async fn a4_oversize_section_splits() { + // The 8000+ token section should split into multiple chunks + let source = DocCorpusSource::new("fixtures/refcorpus/large_section.md", 500); // Force split with low token limit + let sections = source.scan().expect("scan failed"); + + // Should have split into multiple sections + assert!(sections.len() > 1, "large section should split into multiple chunks"); + + // All but the first should be marked as continuation + for (i, section) in sections.iter().enumerate() { + if i > 0 { + assert!(section.continuation, "section {} should be marked as continuation", i); + } else { + assert!(!section.continuation, "first section should not be continuation"); + } + } + + println!("Large section split into {} chunks", sections.len()); +} + +#[tokio::test] +async fn a5_extension_filter() { + // Non-markdown files (like .json) should be skipped + let source = DocCorpusSource::new("fixtures/refcorpus", 5000); + let sections = source.scan().expect("scan failed"); + + // No section should come from skip_me.json + let from_json = sections.iter().any(|s| s.source_uri.contains("skip_me.json")); + assert!(!from_json, "JSON files should be skipped"); + + // Should only have sections from .md files + for section in §ions { + assert!(section.source_uri.ends_with(".md"), + "All sections should come from .md files, got: {}", + section.source_uri); + } +} + +#[tokio::test] +async fn a6_source_uri_stable() { + // Running the walk twice should yield identical (source_uri, sha256) pairs + let source1 = DocCorpusSource::new("fixtures/refcorpus/small.md", 5000); + let sections1 = source1.scan().expect("scan 1 failed"); + + let source2 = DocCorpusSource::new("fixtures/refcorpus/small.md", 5000); + let sections2 = source2.scan().expect("scan 2 failed"); + + assert_eq!(sections1.len(), sections2.len(), "same scan should yield same number of sections"); + + for (s1, s2) in sections1.iter().zip(sections2.iter()) { + assert_eq!(s1.source_uri, s2.source_uri, "source_uri should be stable"); + assert_eq!(s1.file_hash, s2.file_hash, "file_hash should be stable"); + } +} + +#[tokio::test] +async fn a7_dry_run_no_network() { + // Dry run should complete without making any network calls + let source = DocCorpusSource::new("fixtures/refcorpus", 5000); + let report = source.dry_run().expect("dry run failed"); + + assert!(report.total_files > 0, "should have scanned some files"); + assert!(report.total_sections > 0, "should have found some sections"); + + println!("{}", report); +} + +#[tokio::test] +async fn a8_trait_object_safe() { + // DocCorpusSource should be usable as a RecordSource + use mem_chunk::RecordSource; + + let source = DocCorpusSource::new("fixtures/refcorpus/small.md", 5000); + let policy = ChunkPolicy::default(); + + // This compiles only if DocCorpusSource implements RecordSource correctly + let mut chunk_stream = chunks(source, policy); + + // Should be able to pull at least one chunk + let first_chunk = chunk_stream.next().await; + assert!(first_chunk.is_some(), "should produce at least one chunk"); +} + +#[tokio::test] +async fn a9_chunking_respects_heading_boundary() { + // When chunking via the policy, sections should not be split by the chunker + // because each DocCorpusSource record is a complete section + use mem_chunk::RecordSource; + + let source = DocCorpusSource::new("fixtures/refcorpus/nested.md", 5000); + let policy = ChunkPolicy::default(); + + let mut chunk_stream = chunks(source, policy); + let mut chunk_count = 0; + + while let Some(result) = chunk_stream.next().await { + match result { + Ok(chunk) => { + chunk_count += 1; + // Each chunk should contain records from a single section + for record in &chunk.records { + assert!(record.text.len() > 0, "record should have content"); + } + } + Err(e) => panic!("chunking error: {}", e), + } + } + + assert!(chunk_count > 0, "should have produced chunks"); + println!("Produced {} chunks from nested.md", chunk_count); +}