def ParseOptions(cls, options, configuration_object):
    """Parses and validates options.

    Args:
      options (argparse.Namespace): parser options.
      configuration_object (CLITool): object to be configured by the argument
          helper.

    Raises:
      BadConfigObject: when the configuration object is of the wrong type.
      BadConfigOption: when a configuration parameter fails validation.
    """
    if not isinstance(configuration_object, tools.CLITool):
      raise errors.BadConfigObject(
          'Configuration object is not an instance of CLITool')

    process_memory_limit = cls._ParseNumericOption(
        options, 'process_memory_limit')

    if process_memory_limit and process_memory_limit < 0:
      raise errors.BadConfigOption(
          'Invalid process memory limit value cannot be negative.')

    setattr(configuration_object, '_process_memory_limit', process_memory_limit)