Accepts generator+context object for generic type checking. Also implements more default trait impl for easier delegation.