code: def make_parts_for(self, field_name, field_data):
          
          typ = field_data.field_type
          subtyp = field_data.field_subtype
  
          if typ in ("read", "xadc"):
              writeable = False
          else:
              writeable = True
  
          if typ == "time" or typ in ("param", "read") and subtyp == "time":
              self._make_time_parts(field_name, field_data, writeable)
          elif typ == "write" and subtyp == "action":
              self._make_action_part(field_name, field_data)
          elif typ in ("param", "read", "write", "xadc"):
              self._make_param_part(field_name, field_data, writeable)
          elif typ == "bit_out":
              self._make_out(field_name, field_data, "bit")
          elif typ == "pos_out":
              self._make_out(field_name, field_data, "pos")
              self._make_scale_offset(field_name)
              self._make_out_capture(field_name, field_data)
          elif typ == "ext_out":
              self._make_out_capture(field_name, field_data)
          elif typ == "bit_mux":
              self._make_mux(field_name, field_data, "bit")
              self._make_mux_delay(field_name)
          elif typ == "pos_mux":
              self._make_mux(field_name, field_data, "pos")
          elif typ == "table":
              self._make_table(field_name, field_data)
          else:
              raise ValueError("Unknown type %r subtype %r" % (typ, subtyp))
docs: Create the relevant parts for this field
  
          Args:
              field_name (str): Short field name, e.g. VAL
              field_data (FieldData): Field data object