J# is an imperative language, but like most imperative languages it does have some declarative elements. For example, the accessibility of a method is specified by declaring it public, protected, etc. "Custom attributes" generalizes this capability, so