code: function MetadataStore(config) {
      config = config || { };
      assertConfig(config)
          .whereParam("namingConvention").isOptional().isInstanceOf(NamingConvention).withDefault(NamingConvention.defaultInstance)
          .whereParam("localQueryComparisonOptions").isOptional().isInstanceOf(LocalQueryComparisonOptions).withDefault(LocalQueryComparisonOptions.defaultInstance)
          .whereParam("serializerFn").isOptional().isFunction()
          .applyAll(this);
      this.dataServices = []; // array of dataServices;
      this._resourceEntityTypeMap = {}; // key is resource name - value is qualified entityType name
      this._structuralTypeMap = {}; // key is qualified structuraltype name - value is structuralType. ( structural = entityType or complexType).
      this._shortNameMap = {}; // key is shortName, value is qualified name - does not need to be serialized.
      this._ctorRegistry = {}; // key is either short or qual type name - value is ctor;
      this._incompleteTypeMap = {}; // key is entityTypeName; value is array of nav props
      this._incompleteComplexTypeMap = {}; // key is complexTypeName; value is array of complexType props
      this._id = __id++;
      this.metadataFetched = new Event("metadataFetched", this);
  
    }
docs: Constructs a new MetadataStore.
  @example
  var ms = new MetadataStore();
  The store can then be associated with an EntityManager
  @example
  var entityManager = new EntityManager( {
  serviceName: "breeze/NorthwindIBModel",
  metadataStore: ms
  });
  or for an existing EntityManager
  @example
  Assume em1 is an existing EntityManager
  em1.setProperties( { metadataStore: ms });
  @method <ctor> MetadataStore
  @param [config] {Object} Configuration settings .
  @param [config.namingConvention=NamingConvention.defaultInstance] {NamingConvention} NamingConvention to be used in mapping property names
  between client and server. Uses the NamingConvention.defaultInstance if not specified.
  @param [config.localQueryComparisonOptions=LocalQueryComparisonOptions.defaultInstance] {LocalQueryComparisonOptions} The LocalQueryComparisonOptions to be
  used when performing "local queries" in order to match the semantics of queries against a remote service.
  @param [config.serializerFn] A function that is used to mediate the serialization of instances of this type.