docs: function Conversion(value, arg, status, message, predictions) {
    // The result of the conversion process. Will be null if status != VALID
    this.value = value;
  
    // Allow us to trace where this Conversion came from
    this.arg = arg;
    if (arg == null) {
      throw new Error('Missing arg');
    }
  
    if (predictions != null) {
      var toCheck = typeof predictions === 'function' ? predictions() : predictions;
      if (typeof toCheck.then !== 'function') {
        throw new Error('predictions is not a promise');
      }
      toCheck.then(function(value) {
        if (!Array.isArray(value)) {
          throw new Error('prediction resolves to non array');
        }
      }, console.error);
    }
  
    this._status = status || Status.VALID;
    this.message = message;
    this.predictions = predictions;
  }