parseJSON( rep, opts ) {
    let scrubbed;
    opts = opts || { };
    if (opts.privatize) {
      const scrubber = require('../utils/resume-scrubber');
      // Ignore any element with the 'ignore: true' or 'private: true' designator.
      var ret = scrubber.scrubResume(rep, opts);
      scrubbed = ret.scrubbed;
    }

    // Extend resume properties onto ourself.
    extend(true, this, opts.privatize ? scrubbed : rep);

    // Set up metadata
    if (!(this.imp != null ? this.imp.processed : undefined)) {
      // Set up metadata TODO: Clean up metadata on the object model.
      opts = opts || { };
      if ((opts.imp === undefined) || opts.imp) {
        this.imp = this.imp || { };
        this.imp.title = (opts.title || this.imp.title) || this.basics.name;
        if (!this.imp.raw) {
          this.imp.raw = JSON.stringify(rep);
        }
      }
      this.imp.processed = true;
    }
    // Parse dates, sort dates, and calculate computed values
    ((opts.date === undefined) || opts.date) && _parseDates.call( this );
    ((opts.sort === undefined) || opts.sort) && this.sort();
    if ((opts.compute === undefined) || opts.compute) {
      this.basics.computed = {
        numYears: this.duration(),
        keywords: this.keywords()
      };
    }
    return this;
  }
Initialize the JRSResume object from JSON.
  Open and parse the specified JRS resume. Merge the JSON object model onto
  this Sheet instance with extend() and convert sheet dates to a safe &
  consistent format. Then sort each section by startDate descending.
  @param rep {Object} The raw JSON representation.
  @param opts {Object} Resume loading and parsing options.
  {
    date: Perform safe date conversion.
    sort: Sort resume items by date.
    compute: Prepare computed resume totals.
  }