make this invariant, require JProducer<P, T>