Marks a method as a factory method for a given type. A factory method is called whenever a new instance of a given
type is requested. The factory method is used with a higher priority than a plain no-arg constructor when present.
Factory methods currently are used to instantiate the following classes: