public static IEnumerable<Chunk> CreateChunks(byte* cur, byte* end, ChunkFactory factory) { var chunks = new List<Chunk>(); while (cur < end) { var header = (ChunkHeader*)cur; var chunk = factory(header); if (chunk != null) { chunks.Add(chunk); } cur = header->NextChunk(cur); } return chunks; }