Required can be a function, we also call decorate().