Object reference not set to an instance of an object

using UnityEngine;
using System.Collections;

public class Sprite_Colection : MonoBehaviour {
  
    public void start(){
        Update ();
    }
    public void Update(){
        Run ();
    }
    public void Run(){
        Collision2D col = new Collision2D();
        OnTriggerEnter (col);
    }
    public void OnTriggerEnter(Collision2D col){
      
        Debug.Log (col.gameObject.name);
        Destroy (col.gameObject);
        if (col.gameObject.name == "item1(clone)") {
            Debug.Log ("detected collision item1");
            Destroy (col.gameObject);
        } else if (col.gameObject.name == "item2") {
            Debug.Log ("detected collision item2");
            Destroy (col.gameObject);
        } else if (col.gameObject.name == "item3") {
            Debug.Log ("detected collision item3");
            Destroy (col.gameObject);
        } else if (col.gameObject.name == "item4") {
            Debug.Log ("detected collision item4");
            Destroy (col.gameObject);
        } else {
            Debug.Log("detected collision but no name match");      
        }
    }
}

this is the code that i am using to detect collisions and when i run the project is is giving me this error:

I need help on whet is causing it please

Well there are two mistakes there, OnTriggerEnter gets a Collider as argument not a Collision. Also if you are checking 2d colliders, you have to use OnTriggerEnter2D.

Take a look here: Unity - Scripting API: MonoBehaviour.OnTriggerEnter2D(Collider2D)

other than that though do you know how to fix the class?