   {constraints, itemType, compiled} = termsCompileExpectingSameType ctx, items
   (labelOperator form) if not isCall form
   form.tea = new Constrained (join moreConstraints, constraints),
-      new TypeApp collectionType, itemType
+      (markOrigin (new TypeApp collectionType, itemType), form)
   compiled
 
 termsCompileExpectingSameType = (ctx, items) ->


unify = (ctx, t1, t2) ->
  throw new Error "invalid args to unify" unless ctx instanceof Context and t1 and t2
  if (includesJsType t1) or (includesJsType t2)
    return
  sub = ctx.substitution
  ctx.extendSubstitution mostGeneralUnifier (substitute sub, t1), (substitute sub, t2)


    throw new Error "matching on hash maps not supported yet"
  else
    [labels, items] = unzip pairs _terms form
    keyedType = markOrigin (new TypeApp hashmapType, stringType), form
    compiledItems = uniformCollectionCompile ctx, form, items, keyedType
    keys = (map (__ string_, _labelName), labels)
    assignCompile ctx, form, (irMap keys, compiledItems)

