Allow ContextDefinitionNormalizer::normalize properties to be hook/altered.
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #3544954. -->
Reported by: [michaellander](https://www.drupal.org/user/636494)
Related to !864
>>>
<p>[Tracker]<br>
<strong>Short Description: </strong> Add a hook/alter to allow ContextDefinitionNormalizer::normalize properties to be extended and manipulated by other modules.<br>
<strong>Update Summary: </strong> Fixed with MR !864 merged, adding alter support and resolving dependency injection issues.<br>
<strong>Check-in Date: </strong>MM/DD/YYYY (US format) [When we should see progress/get an update]<br>
<strong>Due Date:</strong> MM/DD/YYYY (US format) [When the issue should be fully completed]<br>
<strong>Blocked by:</strong> [#XXXXXX] (New issues on new lines)<br>
<strong>Additional Collaborators:</strong> @username1, @username2<br>
AI Tracker found here: <a href="https://www.drupalstarforge.ai/" title="AI Tracker">https://www.drupalstarforge.ai/</a><br>
--- END METADATA ---</p>
<h3 id="summary-problem-motivation">Problem/Motivation</h3>
<p>Modules may extend the <code>ContextDefinitionInterface</code>, for example core's <code>EntityContextDefinition</code>and Tool API's <code>ListContextDefinition</code> and <code>MapContextDefinition</code>. These may introduce additional methods that need to manipulate property definitions. </p>
<h3 id="summary-proposed-resolution">Proposed resolution</h3>
<p>Introduce a hook/alter prior to <code>$properties[] = $property;</code> that has the arguments: <code>$property</code> and <code>$definition</code>. This should also happen prior to the `multiple` conversion in <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai/issues/3544949" title="Status: Closed (fixed)">#3544949: Missing 'multiple' handling in ContextDefinitionNormalizer::normalize</a></span>.</p>
<h3 id="summary-remaining-tasks">Remaining tasks</h3>
<h3>Optional: Other details as applicable (e.g., User interface changes, API changes, Data model changes)</h3>
issue