The compilation of an attribute with attribute class T, positional-argument-list P and named-argument-list N, consists of the following steps: Follow the compile-time processing steps for compiling an object-creation-expression of the form new T(P). These steps either result in a compile-time error, or determine an instance constructor on T that can be invoked at run-time. Call this instance constructor C. If C does not have public accessibility, then a compile-time error occurs. For each named-argument Arg in N: Let Name be the identifier of the named-argument Arg. Name must identify a non-static read-write public field or property on T. If T has no such field or property, then a compile-time error occurs. Keep the following information for run-time instantiation of the attribute: the attribute class T, the instance constructor C on T, the positional-argument-list P and the named-argument-list N.