I think that `defined` needs to be changed to `declared`.  It's a subtle semantic difference, but those do have different meanings.  @nfagerlund does that sound right to you?