code: def ParseInteger(text, is_signed=False, is_long=False):
    
    # Do the actual parsing. Exception handling is propagated to caller.
    result = _ParseAbstractInteger(text, is_long=is_long)
  
    # Check if the integer is sane. Exceptions handled by callers.
    checker = _INTEGER_CHECKERS[2 * int(is_long) + int(is_signed)]
    checker.CheckValue(result)
    return result
docs: Parses an integer.
  
    Args:
      text: The text to parse.
      is_signed: True if a signed integer must be parsed.
      is_long: True if a long integer must be parsed.
  
    Returns:
      The integer value.
  
    Raises:
      ValueError: Thrown Iff the text is not a valid integer.