code: function init(options) {
      if (options === void 0) { options = {}; }
      if ('debug' in options) {
          diag.debug.enabled = options.debug;
          Q.longStackSupport = options.debug;
      }
      if ('serverUrl' in options) {
          var myURL = url.parse(options.serverUrl);
          if (!myURL.protocol && !myURL.host) {
              return Q.reject(new Error(options.serverUrl + " is not an accepted Url, please add a Host and a Protocol."));
          }
      }
      _.assignWith(exports.initOptions, cloneServerInitOptions(options), function (left, right) { return _.isUndefined(right) ? left : right; });
      if ('push' in options) {
          exports.initOptions.push = _.cloneDeep(options.push);
      }
      return device.ready;
  }
docs: (re)initializes the SDK providing global configuration parameters.
  
  @param options of configuration, often these are hardcoded values of the mobile client app.
  @return promise resolving to Information object as soon as the device is ready.