Odd behavior with setting reference to buttons in script

Hello everyone! So in this script I am attempting to find two button gameobjects in the scene at runtime to turn them off and on when this object spawns and de-spawns, respectively. However, when I actually set the button and test to see if it is null on line 27 somehow the conditional returns both true and false. I’m a little lost as to how this is possible, I tested to see if the SetActive function would even work with this behavior and the function runs and turns off the buttons in the Start function but in the OnClick function the buttons have somehow lost reference. Is it some kind of garbage collection that is happening? My programming skills are still growing so I’m not really sure how to go about fixing this odd behavior. Thank you!

The below is the code of the object that handles turning off and on the buttons:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Popup : MonoBehaviour {

    public Animator anim;

    public GameObject browserWindow;

    public float z_Offset;

    private Button button;

    public GameObject hireB;
    public GameObject declineB;
    private GameObject parent;

    private void Start()
    {
        button = GetComponent<Button>();
        button.onClick.AddListener(Clicked);

        hireB = GameObject.FindGameObjectWithTag("hire");

        print((hireB == null) ? "true" : "False");

        declineB = GameObject.FindGameObjectWithTag("decline");

        if (hireB != null && declineB != null)
        {
            print("Buyttons off");
            hireB.SetActive(false);
            declineB.SetActive(false);
        }
        WorkObject.focusIsWork = false;
    }

    private void Clicked()
    {
        if (button.tag == "close")
        {
           // if (hireB != null && declineB != null)
            //{
            print("Setting active");
            hireB.SetActive(true);
            declineB.SetActive(true);
            //}

            anim.SetBool("closing", true);

            parent = this.transform.parent.gameObject;

            StartCoroutine(DestroyWindow());

            WorkObject.focusIsWork = true;
        }
        else if (button.tag == "browser")
        {
            SpawnBrowser();
        }
    }

    IEnumerator DestroyWindow()
    {
        yield return new WaitForSeconds(3);
        Destroy(parent);
    }

    void SpawnBrowser()
    {
        Vector3 pos = new Vector3(this.transform.parent.parent.position.x, this.transform.parent.parent.position.y, z_Offset);
        Instantiate(browserWindow, pos, Quaternion.identity, this.transform.parent.parent);
    }

}

Nvm, I seem to have fixed it as my start function was being called twice from being attached to another object and it was blocking the one that needed to be called! Simply checking the object’s tag, that the script was attached to, unblocked it.