Even though this isn't on this PR, this seems overly magical to me.  The information of injected properties are already stored implicitly by the dshape.  I don't think that we don't need to store them again.  Perhaps I don't fully understand what this buys us though.