code: 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.
  
      if (isArray(context)) {
        // In array context there are more strict requirements
        // for token value.
  
        if ('-' === token) {
          // Token cannot be a "-" character,
          // it has no sense in current implementation.
          throw getError(ErrorMessage.HYPHEN_IS_NOT_SUPPORTED_IN_ARRAY_CONTEXT);
        }
        if (!isNumber(token)) {
          // Token cannot be non-number.
          throw getError(ErrorMessage.NON_NUMBER_TOKEN_IN_ARRAY_CONTEXT);
        }
        if (token.length > 1 && '0' === token[0]) {
          // Token cannot be non-zero number with leading zero.
          throw getError(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 (isObject(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;
    }
docs: Returns value pointed by |token| in evaluation |context|.
  Throws an exception if any error occurs.
  @param {*} context Current evaluation context.
  @param {!string} token Unescaped reference token.
  @returns {*} Some value or undefined if value if not found.