Compilation of an attribute yields an attribute class T, an instance constructor C on T, a positional-argument-list P, and a named-argument-list N. Given this information, an attribute instance can be retrieved at run-time using the following steps: Follow the run-time processing steps for executing an object-creation-expression of the form new T(P), using the instance constructor C as determined at compile-time. These steps either result in an exception, or produce an instance of T. Call this instance O. For each named-argument Arg in N, in order: Let Name be the identifier of the named-argument Arg. If Name does not identify a non-static public read-write field or property on O, then an exception is thrown. Let Value be the result of evaluating the attribute-argument-expression of Arg. If Name identifies a field on O, then set this field to the value Value. Otherwise, Name identifies a property on O. Set this property to the value Value. The result is O, an instance of the attribute class T that has been initialized with the positional-argument-list P and the named-argument-list N.