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;
    }
@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.