Just to be clear here, with DIP23 in place, the syntax at the caller side for: @property ref T front(T[] arr) { return arr[0];} would not change if you remove the @property. So little code breakage here and the code that breaks is easily fixed by removing @property.