docs: function getValue(context, token) {
    // Reference token evaluation. See Section 4 of spec.
    // First of all we should unescape all special characters in token.
    token = unescapeReferenceToken(token);
    // Further actions depend of context of evaluation.
  
    // In array context there are more strict requirements for token value.
    if (_.isArray(context)) {
        if ('-' === token) {
            // Token cannot be a "-" character,
            // it has no sense in current implementation.
            throw new SyntaxError(ErrorMessage.HYPHEN_IS_NOT_SUPPORTED_IN_ARRAY_CONTEXT);
        }
        if (_.isNaN(+token)) {
            // Token cannot be non-number.
            throw new ReferenceError(ErrorMessage.NON_NUMBER_TOKEN_IN_ARRAY_CONTEXT);
        }
        if (token.length > 1 && '0' === token[0]) {
            // Token cannot be non-zero number with leading zero.
            throw new ReferenceError(ErrorMessage.TOKEN_WITH_LEADING_ZERO_IN_ARRAY_CONTEXT);
        }
        // If all conditions are met, simply return element
        // with token's value index.
        // It might be undefined, but it's ok.
        return context[token];
    }
  
    if (_.isPlainObject(context)) {
        // In object context we can simply return element w/ key equal to token.
        // It might be undefined, but it's ok.
        return context[token];
    }
  
    // If context is not an array or an object,
    // token evaluation is not possible.
    // This is the expected situation and so we won't throw an error,
    // undefined value is perfectly suitable here.
    return;
  }