fix #2693, inconsistency in how TypeConstructor-valued arguments get cached