Returns the same class as was passed in, with dunder methods

added based on the fields defined in the class.

Examines PEP 526 annotations to determine fields.

If init is true, an init() method is added to the class. If repr is true, a repr() method is added. If order is true, rich comparison dunder methods are added. If unsafe_hash is true, a hash() method function is added. If frozen is true, fields may not be assigned to after instance creation.