code: def create(
      product_versions: ProductVersions,
      disk_type: str,
      location: str,
      redundancy_type: str = "LRS",
  ) -> "AzureDynamicSizedDiskResource":
      assert redundancy_type in ("LRS", "ZRS"), redundancy_type
  
      disk_name_to_resource_names = {}
      for disk in azure_disks_by_disk_type[disk_type]:
          disk_name = disk.name
          product = AzureDynamicSizedDiskResource.product_name(
              disk_name, redundancy_type, location
          )
          resource_name = product_versions.resource_name(product)
          assert resource_name, product
          disk_name_to_resource_names[disk_name] = resource_name
      return AzureDynamicSizedDiskResource(
          disk_type, location, disk_name_to_resource_names
      )
  
imports: from typing import Any, Dict, Optional
  from ...driver.billing_manager import ProductVersions
  from ...resources import DynamicSizedDiskResourceMixin, IPFeeResourceMixin, QuantifiedResource, Resource, ServiceFeeResourceMixin, StaticSizedDiskResourceMixin, VMResourceMixin
  from .resource_utils import azure_disk_from_storage_in_gib, azure_disks_by_disk_type
label_desc: Use image node_id 3 for calling the AzureDynamicSizedDiskResource obj's underlying member method code with example usage: obj.create(product_versions, disk_type, location, redundancy_type) and returns: AzureDynamicSizedDiskResource