docs: function (spec) {
        var initialState, initialMetaState, options;
        if (arguments.length <= 1) {
          var effectiveSpec = spec || {};
          initialState = effectiveSpec.initialState;
          initialMetaState = effectiveSpec.initialMetaState;
          options = effectiveSpec.options;
        } else {
          console.warn(
            'Passing multiple arguments to createContext is deprecated. Use single object form instead.'
          );
  
          initialState = arguments[0];
          initialMetaState = arguments[1];
          options = arguments[2];
        }
  
        var ensureImmutable = function (state) {
          return Imm.Iterable.isIterable(state) ? state : Imm.fromJS(state);
        };
  
        var state = ensureImmutable(initialState || {});
        var metaState = ensureImmutable(initialMetaState || {});
  
        var metaBinding = Binding.init(metaState);
        var binding = Binding.init(state, metaBinding);
  
        var effectiveOptions = options || {};
        return new Context(binding, metaBinding, {
          requestAnimationFrameEnabled: effectiveOptions.requestAnimationFrameEnabled !== false,
          renderOnce: effectiveOptions.renderOnce || false,
          stopOnRenderError: effectiveOptions.stopOnRenderError || false,
          logger: effectiveOptions.logger || defaultLogger
        });
      }