===== CHUNK 1 =====
# Test Documentation

This is a sample markdown document for testing the LineChunker functionality.

## Introduction

The purpose of this document is to provide a realistic test fixture for chunking markdown content. It includes various markdown elements like headers, paragraphs, lists, and code blocks.

## Features

===== CHUNK 2 =====
This is a sample markdown document for testing the LineChunker functionality.

## Introduction

The purpose of this document is to provide a realistic test fixture for chunking markdown content. It includes various markdown elements like headers, paragraphs, lists, and code blocks.

## Features

### Basic Text Processing

===== CHUNK 3 =====
## Introduction

The purpose of this document is to provide a realistic test fixture for chunking markdown content. It includes various markdown elements like headers, paragraphs, lists, and code blocks.

## Features

### Basic Text Processing

The chunker should handle regular paragraphs effectively. This includes:

===== CHUNK 4 =====
The purpose of this document is to provide a realistic test fixture for chunking markdown content. It includes various markdown elements like headers, paragraphs, lists, and code blocks.

## Features

### Basic Text Processing

The chunker should handle regular paragraphs effectively. This includes:

- Short sentences
- Medium-length paragraphs with multiple sentences that explain concepts in detail
===== CHUNK 5 =====
## Features

### Basic Text Processing

The chunker should handle regular paragraphs effectively. This includes:

- Short sentences
- Medium-length paragraphs with multiple sentences that explain concepts in detail
- Long paragraphs that might need to be split across chunks

===== CHUNK 6 =====
### Basic Text Processing

The chunker should handle regular paragraphs effectively. This includes:

- Short sentences
- Medium-length paragraphs with multiple sentences that explain concepts in detail
- Long paragraphs that might need to be split across chunks

### Code Blocks

===== CHUNK 7 =====
The chunker should handle regular paragraphs effectively. This includes:

- Short sentences
- Medium-length paragraphs with multiple sentences that explain concepts in detail
- Long paragraphs that might need to be split across chunks

### Code Blocks

Here's an example of TypeScript code:

===== CHUNK 8 =====
- Short sentences
- Medium-length paragraphs with multiple sentences that explain concepts in detail
- Long paragraphs that might need to be split across chunks

### Code Blocks

Here's an example of TypeScript code:

```typescript
interface ChunkerOptions {
===== CHUNK 9 =====
- Long paragraphs that might need to be split across chunks

### Code Blocks

Here's an example of TypeScript code:

```typescript
interface ChunkerOptions {
  maxLines: number;
  overlap: number;
===== CHUNK 10 =====
### Code Blocks

Here's an example of TypeScript code:

```typescript
interface ChunkerOptions {
  maxLines: number;
  overlap: number;
  maxChars: number;
}
===== CHUNK 11 =====
Here's an example of TypeScript code:

```typescript
interface ChunkerOptions {
  maxLines: number;
  overlap: number;
  maxChars: number;
}

class Chunker {
===== CHUNK 12 =====
```typescript
interface ChunkerOptions {
  maxLines: number;
  overlap: number;
  maxChars: number;
}

class Chunker {
  constructor(private options: ChunkerOptions) {}
  
===== CHUNK 13 =====
  maxLines: number;
  overlap: number;
  maxChars: number;
}

class Chunker {
  constructor(private options: ChunkerOptions) {}
  
  chunk(text: string): string[] {
    // Implementation details
===== CHUNK 14 =====
  maxChars: number;
}

class Chunker {
  constructor(private options: ChunkerOptions) {}
  
  chunk(text: string): string[] {
    // Implementation details
    return [];
  }
===== CHUNK 15 =====

class Chunker {
  constructor(private options: ChunkerOptions) {}
  
  chunk(text: string): string[] {
    // Implementation details
    return [];
  }
}
```
===== CHUNK 16 =====
  constructor(private options: ChunkerOptions) {}
  
  chunk(text: string): string[] {
    // Implementation details
    return [];
  }
}
```

### Lists and Enumerations
===== CHUNK 17 =====
  chunk(text: string): string[] {
    // Implementation details
    return [];
  }
}
```

### Lists and Enumerations

1. **Ordered lists** with various items
===== CHUNK 18 =====
    return [];
  }
}
```

### Lists and Enumerations

1. **Ordered lists** with various items
2. **Nested content** that includes:
   - Sub-items with details
===== CHUNK 19 =====
}
```

### Lists and Enumerations

1. **Ordered lists** with various items
2. **Nested content** that includes:
   - Sub-items with details
   - Multiple levels of nesting
   - Different formatting styles
===== CHUNK 20 =====

### Lists and Enumerations

1. **Ordered lists** with various items
2. **Nested content** that includes:
   - Sub-items with details
   - Multiple levels of nesting
   - Different formatting styles
3. **Mixed content** combining text and code

===== CHUNK 21 =====

1. **Ordered lists** with various items
2. **Nested content** that includes:
   - Sub-items with details
   - Multiple levels of nesting
   - Different formatting styles
3. **Mixed content** combining text and code

### Tables

===== CHUNK 22 =====
2. **Nested content** that includes:
   - Sub-items with details
   - Multiple levels of nesting
   - Different formatting styles
3. **Mixed content** combining text and code

### Tables

| Feature | Description | Status |
|---------|-------------|--------|
===== CHUNK 23 =====
   - Multiple levels of nesting
   - Different formatting styles
3. **Mixed content** combining text and code

### Tables

| Feature | Description | Status |
|---------|-------------|--------|
| Line-based chunking | Split by line count | ✓ |
| Character limit | Enforce max chars | ✓ |
===== CHUNK 24 =====
3. **Mixed content** combining text and code

### Tables

| Feature | Description | Status |
|---------|-------------|--------|
| Line-based chunking | Split by line count | ✓ |
| Character limit | Enforce max chars | ✓ |
| Overlap support | Configurable overlap | ✓ |

===== CHUNK 25 =====
### Tables

| Feature | Description | Status |
|---------|-------------|--------|
| Line-based chunking | Split by line count | ✓ |
| Character limit | Enforce max chars | ✓ |
| Overlap support | Configurable overlap | ✓ |

## Advanced Usage

===== CHUNK 26 =====
| Feature | Description | Status |
|---------|-------------|--------|
| Line-based chunking | Split by line count | ✓ |
| Character limit | Enforce max chars | ✓ |
| Overlap support | Configurable overlap | ✓ |

## Advanced Usage

### Configuration Examples

===== CHUNK 27 =====
| Line-based chunking | Split by line count | ✓ |
| Character limit | Enforce max chars | ✓ |
| Overlap support | Configurable overlap | ✓ |

## Advanced Usage

### Configuration Examples

The chunker can be configured in various ways:

===== CHUNK 28 =====
| Overlap support | Configurable overlap | ✓ |

## Advanced Usage

### Configuration Examples

The chunker can be configured in various ways:

```typescript
// Default configuration
===== CHUNK 29 =====
## Advanced Usage

### Configuration Examples

The chunker can be configured in various ways:

```typescript
// Default configuration
const chunker1 = new LineChunker();

===== CHUNK 30 =====
### Configuration Examples

The chunker can be configured in various ways:

```typescript
// Default configuration
const chunker1 = new LineChunker();

// Custom line limit
const chunker2 = new LineChunker({
===== CHUNK 31 =====
The chunker can be configured in various ways:

```typescript
// Default configuration
const chunker1 = new LineChunker();

// Custom line limit
const chunker2 = new LineChunker({
  maxLines: 50,
  overlap: 10
===== CHUNK 32 =====
```typescript
// Default configuration
const chunker1 = new LineChunker();

// Custom line limit
const chunker2 = new LineChunker({
  maxLines: 50,
  overlap: 10
});

===== CHUNK 33 =====
const chunker1 = new LineChunker();

// Custom line limit
const chunker2 = new LineChunker({
  maxLines: 50,
  overlap: 10
});

// Character-based limits
const chunker3 = new LineChunker({
===== CHUNK 34 =====
// Custom line limit
const chunker2 = new LineChunker({
  maxLines: 50,
  overlap: 10
});

// Character-based limits
const chunker3 = new LineChunker({
  maxLines: 100,
  maxChars: 1000,
===== CHUNK 35 =====
  maxLines: 50,
  overlap: 10
});

// Character-based limits
const chunker3 = new LineChunker({
  maxLines: 100,
  maxChars: 1000,
  overlap: 20
});
===== CHUNK 36 =====
});

// Character-based limits
const chunker3 = new LineChunker({
  maxLines: 100,
  maxChars: 1000,
  overlap: 20
});
```

===== CHUNK 37 =====
// Character-based limits
const chunker3 = new LineChunker({
  maxLines: 100,
  maxChars: 1000,
  overlap: 20
});
```

### Best Practices

===== CHUNK 38 =====
  maxLines: 100,
  maxChars: 1000,
  overlap: 20
});
```

### Best Practices

When using the chunker, consider these guidelines:

===== CHUNK 39 =====
  overlap: 20
});
```

### Best Practices

When using the chunker, consider these guidelines:

1. **Choose appropriate chunk sizes** based on your use case
2. **Set overlap** to maintain context between chunks
===== CHUNK 40 =====
```

### Best Practices

When using the chunker, consider these guidelines:

1. **Choose appropriate chunk sizes** based on your use case
2. **Set overlap** to maintain context between chunks
3. **Monitor performance** with large documents
4. **Test edge cases** thoroughly
===== CHUNK 41 =====
### Best Practices

When using the chunker, consider these guidelines:

1. **Choose appropriate chunk sizes** based on your use case
2. **Set overlap** to maintain context between chunks
3. **Monitor performance** with large documents
4. **Test edge cases** thoroughly

## Conclusion
===== CHUNK 42 =====
When using the chunker, consider these guidelines:

1. **Choose appropriate chunk sizes** based on your use case
2. **Set overlap** to maintain context between chunks
3. **Monitor performance** with large documents
4. **Test edge cases** thoroughly

## Conclusion

This test document covers various markdown elements and should provide good coverage for testing the chunking algorithm. The chunker should handle all these elements gracefully while respecting the configured limits.