def METHOD_NAME(fe: 'FeatureEntry', gate: Gate,
    email: str, new_state: int, old_state: int) -> None:
  """Notify subscribers of a vote change and save amendments."""
  stage = core_models.Stage.get_by_id(gate.stage_id)
  stage_enum = core_enums.INTENT_STAGES_BY_STAGE_TYPE.get(
    stage.stage_type, core_enums.INTENT_NONE)
  stage_name = core_enums.INTENT_STAGES[stage_enum]
  state_name = Vote.VOTE_VALUES[new_state]
  appr_def = approval_defs.APPROVAL_FIELDS_BY_ID[gate.gate_type]
  gate_name = appr_def.name
  acitivity_content = '%s set review status for stage: %s, gate: %s to %s.' % (
      email, stage_name, gate_name, state_name)
  gate_id = gate.key.integer_id()
  activity = Activity(feature_id=fe.key.integer_id(), gate_id=gate_id,
                      author=email, content=acitivity_content)
  activity.put()
  old_state_name = Vote.VOTE_VALUES.get(old_state, Vote.VOTE_VALUES[Vote.NA])
  gate_url = 'https://chromestatus.com/feature/%s?gate=%s' % (
    gate.feature_id, gate_id)
  changed_props = {
      'prop_name': '%s set review status in %s' % (email, gate_url),
      'old_val': old_state_name,
      'new_val': state_name,
  }
  params = {
    'changes': [changed_props],
    # Subscribers are only notified on feature update.
    'is_update': True,
    'feature': converters.feature_entry_to_json_verbose(fe)
  }
  # Create task to email subscribers.
  cloud_tasks_helpers.enqueue_task('/tasks/email-subscribers', params)