Hello Stewart,
Perhaps what complicates matters further is that D has three ways of specifying attributes:(i) as part of the declaration itself
I more or less only use this.
(ii) in a block delimited by { }
If I remembered that this one even exists, I might use it.
(iii) with a colon to apply to everything that follows until the end of the scope
I'd be just tickled if this one were just dropped. Just my $0.02 because that might make things less complex.