Roblox studio lags and after this crashes

So, I want to spawn 4 frames around another frame and change they visibillity togather.
The problem that roblox studio crashes after i try to change parent of other 4 frames.
My script:

local skillTreeHelper = script.Parent
local skillTree = script.Parent.Parent.skillTree
local Clones = {
	
}
for i = 1,4 do
	task.wait()
	local Clone = skillTreeHelper:Clone()
	Clone.Parent = skillTreeHelper.Parent
	Clone.Position = skillTree.Position 
	if i == 1 then
		Clone.Position = UDim2.new(UDim.new(Clone.Position.Width.Scale,Clone.Position.Width.Offset + skillTree.Position.Width.Offset * 2),UDim.new(Clone.Position.Height.Scale,Clone.Position.Height.Offset))
	end
	if i == 2 then
		Clone.Position = UDim2.new(UDim.new(Clone.Position.Width.Scale ,Clone.Position.Width.Offset - skillTree.Position.Width.Offset * 2),UDim.new(Clone.Position.Height.Scale,Clone.Position.Height.Offset))
	end
	if i == 3 then
		Clone.Position = UDim2.new(UDim.new(Clone.Position.Width.Scale,Clone.Position.Width.Offset),UDim.new(Clone.Position.Height.Scale,Clone.Position.Height.Offset + skillTree.Position.Height.Offset * 2))
	end
	if i == 4 then
		Clone.Position = UDim2.new(UDim.new(Clone.Position.Width.Scale,Clone.Position.Width.Offset),UDim.new(Clone.Position.Height.Scale,Clone.Position.Height.Offset - skillTree.Position.Width.Offset * 2))
	end
	Clone.Size = skillTree.Size
	table.insert(Clones,i,Clone)
end
local function ChangedVisibillity()
	if skillTree.Visible == true then
		for i,v in pairs(Clones) do
			v.Visible = true
		end
	elseif skillTree.Visible == false then
		for i,v in pairs(Clones) do
			v.Visible = false
		end
	end
end
skillTree:GetPropertyChangedSignal("Visible"):Connect(ChangedVisibillity)

I tried:

  1. Add on first line:repeat task.wait() until (script.Parent.Parent.Parent ~= game:GetService(“StarterGui”))
    2.Add to string when i add 4 frames into table like this:
    table.insert(Clones,i,tostring(Clone)) instead of this table.insert(Clones,i,Clone)