code: function _getRangeForPropValue(startCtx, endCtx) {
          var range = { "start": {},
                        "end": {} };
  
          // Skip the ":" and any leading whitespace
          while (TokenUtils.moveNextToken(startCtx)) {
              if (_hasNonWhitespace(startCtx.token.string)) {
                  break;
              }
          }
  
          // Skip the trailing whitespace and property separators.
          while (endCtx.token.string === ";" || endCtx.token.string === "}" ||
                  !_hasNonWhitespace(endCtx.token.string)) {
              TokenUtils.movePrevToken(endCtx);
          }
  
          range.start = _.clone(startCtx.pos);
          range.start.ch = startCtx.token.start;
  
          range.end = _.clone(endCtx.pos);
          range.end.ch = endCtx.token.end;
  
          return range;
      }
docs: @private
  Return a range object with a start position and an end position after
  skipping any whitespaces and all separators used before and after a
  valid property value.
  
  @param {editor:{CodeMirror}, pos:{ch:{string}, line:{number}}, token:{object}} startCtx context
  @param {editor:{CodeMirror}, pos:{ch:{string}, line:{number}}, token:{object}} endCtx context
  @return {{start: {line: number, ch: number},
  end: {line: number, ch: number}}} A range object.