Index: uspace/dist/src/bithenge/test.bh
===================================================================
--- uspace/dist/src/bithenge/test.bh	(revision d7c8e39f1a0d65277a7a6bf47f16ed8e86ca883d)
+++ uspace/dist/src/bithenge/test.bh	(revision 0f8062a433919c6a4b10e0a83e3c6b9f5a99fe2f)
@@ -8,10 +8,29 @@
 };
 
-transform item(first_len, second_len) = struct {
-	.id <- uint32le <- known_length(4); # the known_length is unnecessary
+transform u32(little_endian) =
+	if (little_endian) {
+		uint32le
+	} else {
+		uint32be
+	};
+
+transform item(little_endian, len) = struct {
+	.type <- u32(little_endian);
 	.name <- pascal_string;
-	.first <- known_length(first_len);
-	.second <- known_length(second_len);
+	switch (.type) {
+		3: {
+			.val <- u32(little_endian);
+		};
+		14: {
+			.text <- ascii <- known_length(len);
+		};
+		else: {
+			.unknown <- known_length(len);
+		};
+	}
 };
 
-transform main() = item(3, 0);
+transform main() = struct {
+	.first_item <- item(true, 3);
+	.second_item <- item(false, 4);
+};
