Check that a1lx is not marked as essential
diff --git a/src/read.c b/src/read.c
index 2755bcc..ca0be89 100644
--- a/src/read.c
+++ b/src/read.c
@@ -1976,7 +1976,27 @@
                 }
             }
             if (supportedType) {
-                if (!essential) {
+                if (essential) {
+                    // Verify that it is legal for this property to be flagged as essential. Any
+                    // types in this list are *required* in the spec to not be flagged as essential
+                    // when associated with an item.
+                    static const char * const nonessentialTypes[] = {
+
+                        // AVIF: Section 2.3.2.3.2: "If associated, it shall not be marked as essential."
+                        "a1lx"
+
+                    };
+                    size_t nonessentialTypesCount = sizeof(nonessentialTypes) / sizeof(nonessentialTypes[0]);
+                    for (size_t i = 0; i < nonessentialTypesCount; ++i) {
+                        if (!memcmp(srcProp->type, nonessentialTypes[i], 4)) {
+                            avifDiagnosticsPrintf(diag,
+                                                  "Item ID [%u] has a %s property association which must not be marked essential, but is",
+                                                  itemID,
+                                                  nonessentialTypes[i]);
+                            return AVIF_FALSE;
+                        }
+                    }
+                } else {
                     // Verify that it is legal for this property to not be flagged as essential. Any
                     // types in this list are *required* in the spec to be flagged as essential when
                     // associated with an item.