public static Object applyLogicalType(Schema.Field field, Object value) {
    if (field == null || field.schema() == null) {
      return value;
    }

    Schema fieldSchema = resolveUnionSchema(field.schema());
    return applySchemaTypeLogic(fieldSchema, value);
  }
@Test
  public void testApplyLogicalTypeReturnsConvertedValueWhenConversionForLogicalTypeIsKnown() {
    String value = "d7738003-1472-4f63-b0f1-b5e69c8b93e9";
    String schemaString =
        new StringBuilder().append("{").append("  \"type\": \"record\",").append("  \"name\": \"test\",")
            .append("  \"fields\": [{").append("    \"name\": \"column1\",").append("    \"type\": {")
            .append("      \"type\": \"string\",").append("      \"logicalType\": \"uuid\"").append("    }")
            .append("  }]").append("}").toString();
    Schema schema = new Schema.Parser().parse(schemaString);

    Object result = AvroSchemaUtil.applyLogicalType(schema.getField("column1"), value);

    Assert.assertTrue(result instanceof UUID);
    Assert.assertEquals(UUID.fromString(value), result);
  }