input: Write a function to calculate the total cost of a shopping cart that considers item prices, quantity, shipping cost, and any applicable taxes. The function should take a list of items, the shipping cost, and the tax rate as inputs and return the total cost. If the input list is empty, the function should return 0.
  
  assert calculate_total_cost([{"name": "widget", "price": 10, "quantity": 5}, {"name": "thingy", "price": 7, "quantity": 3}, {"name": "doodad", "price": 5, "quantity": 2}], 7.50, 0.095) == 98.4875
  assert calculate_total_cost([], 0, 0) == 0
  assert calculate_total_cost([{"name": "item1", "price": 5, "quantity": 1}], 5, 0.1) == 11.0
  assert calculate_total_cost([{"name": "item2", "price": 3, "quantity": 2}], 1.5, 0.05) == 8.175
  assert calculate_total_cost([{"name": "item3", "price": 2, "quantity": 3}, {"name": "item4", "price": 4, "quantity": 1}], 2, 0.07) == 14.96
output: def calculate_total_cost(items, shipping_cost, tax_rate):
      if not items:
          return 0
      subtotal = sum(item["price"] * item["quantity"] for item in items)
      total_cost = subtotal + shipping_cost
      total_cost += total_cost * tax_rate
      return total_cost