               body: [(jsReturn (jsNew identifier, paramNames))])])
         else
           (jsNew identifier, []))
-      (join (translateDict identifier, paramNames), [constrValue]))
+      constrFunction = dictConstructorFunction identifier, paramNames
+      accessors = dictAccessors constr.symbol, identifier, paramNames
+      (concat [constrFunction, accessors, [constrValue]]))
 
 findDataType = (ctx, typeArgLists, typeParams, dataName) ->
   varNames = map _symbol, typeParams

        score = -Infinity
      else
        score = -((subMagnitude sub) + i * 100)
      type: score + ' ' + plainPrettyPrint def.type#score + ' ' +
      arity: def.arity
      docs: def.docs
      rawType: def.type

          declareMethods ctx, classConstraint, freshedDeclarations
          ctx.declare name, isClass: yes

          dictConstructorFunction name, (keysOfMap freshedDeclarations), superClassNames
        else
          jsNoop()
    else
