ArgumentException: GetComponent requires that the requested component 'List`1' derives from MonoBehaviour or Component or is an interface.

Hi, I have been working on this script:

`public enum PlaneType
         {
        SmallBomber,
       MediumBomber,
       LargeBomber
       }
       public PlaneType planetype;
       public List Plane = new List();
       public List Spawns = new List();
       public List Remove = new List();

      public bool T;

       public void PlaneAttack(PlaneType type)
       { 
        if (type == PlaneType.SmallBomber)
        {
            for (int i = 0; i < 2; i++)
            {
                Instantiate(Plane[1]);
                Instantiate(Plane[2]);
                Thread.Sleep(1000);
            }
        }
        else if (type == PlaneType.MediumBomber)
        {
            for (int i = 0; i < 2; i++)
            {
                Instantiate(Plane[0]);
                Thread.Sleep(3000);
            }
        }
        else
        {
            Instantiate(Plane[0]);
        }
    }
        Plane = GetComponent<List>();
        for (int i = 0; i < 5; i++)
        {
            Spawns.Add(GameObject.Find("Spawn " + i.ToString()));
        }
        for (int j  = 0; j < 5; j++)
        {
            Remove.Add(GameObject.Find("Destroy " + j.ToString()));
        }
        for (int a = 0; a < 3; a++)
        {
            Plane.Add(GameObject.Find("EnemyPlane Small"));
        }
        Plane[0].GetComponent().StartPoint = Spawns[3].transform;
        Plane[0].GetComponent().EndPoint = Remove[3].transform;
        Plane[1].GetComponent().StartPoint = Spawns[2].transform;
        Plane[1].GetComponent().EndPoint = Remove[2].transform;
        Plane[2].GetComponent().StartPoint = Spawns[4].transform;
        Plane[2].GetComponent().EndPoint = Remove[4].transform;
     }
	
	// Update is called once per frame
	void Update () {
           if (T == true)
           {
            PlaneAttack(planetype);
            T = false;
           }
      }
    }
` 

I have 3 copies of the same prefab, in the Plane list, but with different transform set (using empty GameObjects that act as Markers). When debugging, this error is thrown:

ArgumentException: GetComponent requires that the requested component 'List1' derives from MonoBehaviour or Component or is an interface. UnityEngine.Component.GetComponent[List1] () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/ComponentBindings.gen.cs:48)
PlaneAttack.Start () (at Assets/Scripts/PlaneAttack.cs:131)

I entered the first line into Unity answers but to no avail as none of the previous answers suited my script.
Thanks
NOTE: this is a simplified version of my final script, and the lines listed in the error will not match those in the code shown.

Plane = GetComponent<List>();

Does not mean anything

You may want to get the child transforms instead :

List<Transform> Plane = new List<Transform>() ;

// ....
for( int childIndex = 0 ; childIndex < transform.childCount ; ++childIndex )
       Plane.Add( transform.GetChild( childIndex ) ) ;