Overlapparams is not working

the overlapparams is not working, i tested it out by printing the instance in the variable roads, but it printed our sth that is not in the whitelist

plr = nil
while plr == nil do
	wait()
	plr = game.Players:FindFirstChildOfClass("Player")
end
idnum = 0
local roads
roadData = {}
local char = game.Workspace:WaitForChild(plr.Name.."Char",math.huge)
local rs =game.ReplicatedStorage
local whitelist = OverlapParams.new()
lastroad = game.Workspace.Road.StartRoad
whitelist.FilterType = Enum.RaycastFilterType.Whitelist
whitelist.FilterDescendantsInstances = game.Workspace.Road:GetChildren()
local function genroad()
	local num = math.random(1,2)
	if num == 1 then
		if roadData[idnum] == "Grass" then
			genroad()
		else
			table.insert(roadData,"Grass")
			local road = rs.Forset.Road.Grass:Clone()
			road.Parent = game.Workspace.Road
			road.CFrame = lastroad.CFrame + Vector3.new(10,0,0)
			road.Script.Disabled = false
			road.Name = idnum + 1
			idnum = idnum + 1
			lastroad = road
		end
	elseif num == 2 then
		if roadData[idnum] == "Road" and roadData[idnum - 1] == "Road" and roadData[idnum - 2] == "Road" then
			genroad()
		else
			table.insert(roadData,"Road")
			local road = rs.Forset.Road.CarRoad:Clone()
			road.Parent = game.Workspace.Road
			road.CFrame = lastroad.CFrame + Vector3.new(10,0,0)
			road.Script.Disabled = false
			road.Name = idnum + 1
			idnum = idnum + 1
			lastroad = road
		end
	end
end
while true do
	wait()
	whitelist.FilterDescendantsInstances = game.Workspace.Road:GetChildren()
	roads = workspace:GetPartBoundsInBox(char:WaitForChild("HumanoidRootPart").CFrame, Vector3.new(200,200,400),whitelist)
	if #roads <= 20 then
		genroad()
	end
end