final case classBlockRef(name: String) extends AnyVal with Product with Serializable
final case classBlockSig(inputs: Set[IRField], outputs: Set[IRField]) extends Product with Serializable
final case classBlockType(name: String) extends Product with Serializable
final case classDesc[E](expr: E) extends SortItem[E] with Product with Serializable
final case classFieldsAndGraphs[E](items: Map[IRField, E] = Map.empty[IRField, E], graphs: Set[IRGraph] = Set.empty) extends Binds[E] with Product with Serializable
final case classMatchBlock[E](after: Set[BlockRef], binds: Pattern[E], where: Set[E] = Set.empty[E], optional: Boolean, source: IRGraph) extends BasicBlock[Pattern[E], E] with Product with Serializable
final case classOrderedFieldsAndGraphs[E](fieldsOrder: IndexedSeq[IRField] = IndexedSeq.empty, graphs: Set[IRGraph] = Set.empty) extends Binds[E] with Product with Serializable