You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: common_system_notes_service.rb
    path of file: ./repos/gitlabhq/app/services/issuable
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

module Issuable
  class CommonSystemNotesService < ::BaseProjectService
    attr_reader :issuable, :is_update

    def execute(issuable, old_labels: [], old_milestone: nil, is_update: true)
      @issuable = issuable
      
    
    def handle_start_date_or_due_date_change_note
      # Type check needed as some issuables do their own date change handling for date fields other than due_date
      change_date_fields = issuable.is_a?(Issue) ? %w[due_date start_date] : %w[due_date]
      changed_dates = issuable.previous_changes.slice(*change_date_fields)
      create_start_date_or_due_date_note(changed_dates)
    end

    def handle_time_tracking_note
      estimate_updated = is_update && issuable.previous_changes.include?('time_estimate')
      estimate_set = !is_update && issuable.time_estimate != 0

      create_time_estimate_note if estimate_updated || estimate_set
      create_time_spent_note if issuable.time_spent?
    end

    def handle_description_change_note
      if issuable.previous_changes.include?('description')
        if issuable.tasks? && issuable.updated_tasks.any?
          create_task_status_note
        else
          # TODO: Show this note if non-task content was modified.
          # https://gitlab.com/gitlab-org/gitlab-foss/issues/33577
          create_description_change_note
        end
      end