requires_arc