code: def validate_fields_match(name, field, existing_field):
      """Validates that the types of the given fields match.
  
      Embedded document fields are not validated, if applicable.
  
      Args:
          name: the field name or ``embedded.field.name``
          field: a :class:`fiftyone.core.fields.Field`
          existing_field: the reference :class:`fiftyone.core.fields.Field`
  
      Raises:
          ValueError: if the fields do not match
      """
      if not issubclass(
          type(field), type(existing_field)
      ) and not issubclass(type(existing_field), type(field)):
          if isinstance(
              existing_field, fof.ObjectIdField
          ) and isinstance(field, fof.StringField):
              return
  
          raise ValueError(
              "Field '%s' type %s does not match existing field type %s"
              % (name, field, existing_field)
          )
  
      if isinstance(field, fof.EmbeddedDocumentField):
          if not issubclass(
              field.document_type, existing_field.document_type
          ) and not issubclass(
              existing_field.document_type, field.document_type
          ):
              raise ValueError(
                  "Embedded document field '%s' type %s does not match existing "
                  "field type %s"
                  % (
                      name,
                      field.document_type,
                      existing_field.document_type,
                  )
              )
  
      if isinstance(field, (fof.ListField, fof.DictField)):
          if (
              field.field is not None
              and existing_field.field is not None
              and not isinstance(
                  field.field, type(existing_field.field)
              )
          ):
              raise ValueError(
                  "%s '%s' type %s does not match existing field type %s"
                  % (
                      field.__class__.__name__,
                      name,
                      field.field,
                      existing_field.field,
                  )
              )
  
imports: from datetime import date, datetime
  import inspect
  import json
  import numbers
  import six
  import sys
  from bson import Binary, json_util, ObjectId, SON
  import numpy
  import pytz
  import fiftyone
  import fiftyone.core.fields
  import fiftyone.core.media
  import fiftyone.core.utils
label_desc: Use image node_id 13 for calling a global function with example usage: validate_fields_match(name, field, existing_field) without return types