IndexOutOfRangeException: Array index is out of range.

I have this array:

public GameObject[] arrayname= new GameObject[4];

and this code for this array:

if (arrayname[0]!= null) 
		{
			if (arrayname[1]!= null) 
			{
				if (arrayname[2]!= null) 
				{
					if (arrayname[3]!= null) //HERE IT POPS THE ERROR!!!!!!!!!!!!!!!!!!
					{
						arrayname[3].SetActive (false);
						arrayname[3]=arrayname[2];
						arrayname[2]=arrayname[1];
						arrayname[1]=arrayname[0];
						arrayname[0]=otherarray *;*
  •  			}*
    
  •  			else* 
    
  •  			{*
    
  •  				arrayname[3]=arrayname[2];*
    
  •  				arrayname[2]=arrayname[1];*
    
  •  				arrayname[1]=arrayname[0];*
    

_ arrayname[0]=otherarray ;_
* }*
* }*
* else*
* {*
* arrayname[2]=arrayname[1];*
* arrayname[1]=arrayname[0];*
_ arrayname[0]=otherarray ;
* }
}
else*
* {
arrayname[1]=arrayname[0];
arrayname[0]=otherarray ;
}
}
else*

* {
arrayname[0] = otherarray ;
}*

Is this some kind of bug? Because I didn’t go out of range._

Your array is public so it will be overwritten from inspector, are you sure that array size in inspector is 4 ?

public GameObject[] arrayname;