Instantiate no longer working?

So I am currently doing the 48 Secret Jam and its been going well until I have tried to use the instantiate function in the most recent version of Unity. I am trying to create a simple spawner which I have done many times before, however the Instantiate function is not operating the way it used to. For some reason it wants me to feed it a parent where I would usually feed it the coordinates of where I want the object to spawn. I am tearing my hair out trying to figure this out, I can’t figure out why this is happening! I’ll chuck my code below so people can check I haven’t made a stupid error that I am just overlooking.

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

public class LuggageSpawn : MonoBehaviour {

    public List<Luggage> luggageList;
    public bool debug;
    public GameObject spawnLocation;

    public int maxSpawns = 50;
    public float spawnRate;
    public float[] spawnRates;

    float spawnTimer;

    GameMaster gM;

    void Start()
    {
        gM = this.GetComponent<GameMaster>();
        spawnRate = spawnRates[0];
        spawnTimer = spawnRate;
    }

    void Update()
    {
        spawnTimer -= Time.deltaTime;

        if (spawnTimer <= 0)
        {
            GameObject spawnObj = luggageList[Random.Range(0, luggageList.Count)].gameObject;
            GameObject.Instantiate(spawnObj, spawnLocation.transform.position);
            spawnTimer = spawnRate;
        }
    }

    public void SetSpawnRate(int listIndex)
    {
        spawnRate = spawnRates[listIndex];
    }
}

GameObject.Instantiate(spawnObj, spawnLocation.transform.position,spawnLocation.transform.rotation);
to instantiate an object you need position and rotation I guess.

Unity does have documentation on all its classes so you never need to guess.

Object.Instantiate has 5 overloads .

public static Object Instantiate(Object original);
public static Object Instantiate(Object original, Transform parent);
public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

@PersianKiller what you have written there is exactly what I am trying to do, however whenever I try to use that one it throws an error. For some reason I am locked into using the Instantiate function ONLY the way that I have described. What you have described is what I am trying to do (and have done many, many, many, many times in the past) but for some reason it is just not working.

@NoseKills I am not new to Unity and am aware of the documentation and checked it over before I even thought about posting here. The reason I posted here is because it is not working the way the documentation describes. I am trying to write public static Object Instantiate(Object original, Vector3 position, Quaternion rotation); however it throws an error when I format it like that and says it cannot convert a Vector3 to a Transform because it is STILL trying to read it as public static Object Instantiate(Object original, Transform parent);. That is the problem I am having. No matter which way I write it, it will not accept anything other than public static Object Instantiate(Object original, Transform parent); for some reason.

I also realised it is doing something else very strange, I have a series of objects spawning through the one spawner and the workaround I am using right now so I can actually spawn things in the scene. So when it spawns one type of object, it spawns it in one location, when it spawns another type of object it spawns it in a slightly offset location along the world x axis. I am not sure what is wrong with Unity but I have never had any problems using it in 2 years, up until this point in time. The workaround code I am using for the spawner (because of the original instantiate issue) is below.

public class LuggageSpawn : MonoBehaviour {

    public GameObject[] luggageList;
    public bool debug;
    public GameObject spawnLocation;

    public int maxSpawns = 50;
    public float spawnRate;
    public float[] spawnRates;

    float spawnTimer;

    void Start()
    {
        spawnRate = spawnRates[0];
        spawnTimer = spawnRate;
    }

    void Update()
    {
        spawnTimer -= Time.deltaTime;

        if (spawnTimer <= 0)
        {
            SpawnLuggage();
            spawnTimer = spawnRate;
        }
    }

    void SpawnLuggage()
    {
        GameObject spawnObj = Instantiate(luggageList[Random.Range(0, luggageList.Length)].gameObject, spawnLocation.transform);
        spawnObj.transform.parent = null;
    }

    public void SetSpawnRate(int listIndex)
    {
        spawnRate = spawnRates[listIndex];
    }