code: def _EvaluateExpression(frame, expression):
    
    try:
      code = compile(expression, '<watched_expression>', 'eval')
    except (TypeError, ValueError) as e:
      # expression string contains null bytes.
      return (False, {
          'isError': True,
          'refersTo': 'VARIABLE_NAME',
          'description': {
              'format': 'Invalid expression',
              'parameters': [str(e)]}})
    except SyntaxError as e:
      return (False, {
          'isError': True,
          'refersTo': 'VARIABLE_NAME',
          'description': {
              'format': 'Expression could not be compiled: $0',
              'parameters': [e.msg]}})
  
    try:
      return (True, native.CallImmutable(frame, code))
    except BaseException as e:  # pylint: disable=broad-except
      return (False, {
          'isError': True,
          'refersTo': 'VARIABLE_VALUE',
          'description': {
              'format': 'Exception occurred: $0',
              'parameters': [str(e)]}})
docs: Compiles and evaluates watched expression.
  
    Args:
      frame: evaluation context.
      expression: watched expression to compile and evaluate.
  
    Returns:
      (False, status) on error or (True, value) on success.