pub trait CellRendererImpl: CellRendererImplExt + ObjectImpl {
    fn request_mode(&self, renderer: &Self::Type) -> SizeRequestMode { ... }
    fn preferred_width<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        widget: &P
    ) -> (i32, i32) { ... }
    fn preferred_width_for_height<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        widget: &P, 
        height: i32
    ) -> (i32, i32) { ... }
    fn preferred_height<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        widget: &P
    ) -> (i32, i32) { ... }
    fn preferred_height_for_width<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        widget: &P, 
        width: i32
    ) -> (i32, i32) { ... }
    fn aligned_area<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        widget: &P, 
        flags: CellRendererState, 
        cell_area: &Rectangle
    ) -> Rectangle { ... }
    fn render<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        cr: &Context, 
        widget: &P, 
        background_area: &Rectangle, 
        cell_area: &Rectangle, 
        flags: CellRendererState
    ) { ... }
    fn activate<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        event: Option<&Event>, 
        widget: &P, 
        path: &str, 
        background_area: &Rectangle, 
        cell_area: &Rectangle, 
        flags: CellRendererState
    ) -> bool { ... }
    fn start_editing<P: IsA<Widget>>(
        &self, 
        renderer: &Self::Type, 
        event: Option<&Event>, 
        widget: &P, 
        path: &str, 
        background_area: &Rectangle, 
        cell_area: &Rectangle, 
        flags: CellRendererState
    ) -> Option<CellEditable> { ... }
    fn editing_canceled(&self, renderer: &Self::Type) { ... }
    fn editing_started(
        &self, 
        renderer: &Self::Type, 
        editable: &CellEditable, 
        path: &str
    ) { ... }
}