Although that particular error message seems to be specific to `Blob`, it also breaks with other parametric roles (such as `Array`), because the generic parameter T of the outer role seems to be passed through without being specialized first.
Shorter examples: ➜ role R[::T] { method a { Array[T].new } }; say R[Int].a.perl; No such method 'perl' for invocant of type 'T' in block <unit> at <unknown file> line 1 ➜ role R[::T] { method a { Blob[T].new } }; say R[Int].a.perl; concatenate requires a concrete string, but got null in any protect at gen/moar/stage2/NQPCORE.setting line 1033 in method a at <unknown file> line 1 in block <unit> at <unknown file> line 1 Looks related to https://rt.perl.org/Ticket/Display.html?id=131947 .