Attempt to compine voice command script w waypoint script cause compiler error

I’ve got a test App with which I’m trying to get an object to travel around a waypoint route on a verbal start command, “Start Sequence Three”. The waypoint script works fine if I just let it startup without a verbal command . I even have a verbal command to change the color of the object (capsule) that moves around the waypoints that works as well if I just start the script up by running the scene (shows that verbal command scripting is working) The waypoint script has to be place within Update (). When I try to insert the verbal command to start the Update process, I get a compiler error like "Local function ‘Update’ is called but never used’. The script and Scene screen shot are shown below. NOTE: The only error flagged by the red squiggle is under the word Update in the statement “void Update ()”. Associated with it is the error message above.
QUESTION: What am I doing wrong? All help is appreciated. I’m not a programmer and new to Unity.
Cheers,
Bob G.

SCRIPT:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Windows.Speech;

public class MoveOpponent01B : MonoBehaviour
{
private KeywordRecognizer keywordRecognizer;
private Dictionary<string, Action> actions = new Dictionary<string, Action>();
public GameObject waypoints;
int current = 0;
float rotSpeed;
public float speed;
float WPradius = .1f;

public Renderer rend;

void Start()
{
    actions.Add("start sequence three", StartThree);
    actions.Add("red", Red);
    Debug.Log("StartTT");
    keywordRecognizer = new KeywordRecognizer(actions.Keys.ToArray());
    keywordRecognizer.OnPhraseRecognized += RecognizedSpeech;
    keywordRecognizer.Start();

    rend = GetComponent<Renderer>();
}


    private void RecognizedSpeech(PhraseRecognizedEventArgs speech)
    {
        Debug.Log(speech.text);
        actions[speech.text].Invoke();
    }
// private void StartThree()
private void Red()
{
    rend.material.color = Color.red;
}
private void StartThree() {
    void Update() {
        {
            Debug.Log("StartThree");
            if (Vector4.Distance(waypoints[current].transform.position, transform.position) < WPradius)
            {
                current++;
                if (current >= waypoints.Length)
                {
                    current = 0;
                }
            }
            transform.position = Vector4.MoveTowards(transform.position, waypoints[current].transform.position, Time.deltaTime * speed);
        }
    }
}

}
alt text

Update: I’ve created a workaround for my problem that is probably a better approach to my objective. I created a global variable that was toggled from 0 to 1 if the voice command was recognized. I then used that variable in a simple if statement within the Update function that I could understand. This negated the need for me to try to use the statement “private void StartThree()” in the wrong point within the script. NOTE: I had inherited that technique from a youTube tutorial that solved a problem for me in a different context. As indicated in my first question, I couldn’t figure out how to make that work in this context. I’m going to declare this problem solved but I’d still be interested to know if or how the “private void StartThree()” statement could have been used.
The new script is below.
Cheers,
Bob G.

NEW SCRIPT:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Windows.Speech;

public class MoveOpponent01B : MonoBehaviour
{
private KeywordRecognizer keywordRecognizer;
private Dictionary<string, Action> actions = new Dictionary<string, Action>();
public GameObject waypoints;
int current = 0;
float rotSpeed;
public float speed;
float WPradius = .1f;
int go = 0;

public Renderer rend;

void Start()
{
    actions.Add("start sequence three", StartThree);
    actions.Add("red", Red);
    Debug.Log("StartTT");
    keywordRecognizer = new KeywordRecognizer(actions.Keys.ToArray());
    keywordRecognizer.OnPhraseRecognized += RecognizedSpeech;
    keywordRecognizer.Start();

    rend = GetComponent<Renderer>();
}


    private void RecognizedSpeech(PhraseRecognizedEventArgs speech)
    {
        Debug.Log(speech.text);
        actions[speech.text].Invoke();
    }
// private void StartThree()
private void Red()
{
    rend.material.color = Color.red;
}
private void StartThree()
{
    go = 1;
}
    void Update() {
        
        if (go == 1)
        {
            if (Vector4.Distance(waypoints[current].transform.position, transform.position) < WPradius)
            {
                current++;
                if (current >= waypoints.Length)
                {
                    current = 0;
                }
            }
            transform.position = Vector4.MoveTowards(transform.position, waypoints[current].transform.position, Time.deltaTime * speed);
        }            
    }    

}