You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: _PanelPropItem.gen.m
    path of file: ./repos/BRAPH-2/braph2genesis/src/gui
    
    the code of the file until where you have to start completion: %% ¡header!
PanelPropItem < PanelProp (pr, item prop panel) plots the panel of a property item.

%%% ¡description!
An Item Prop Panel (PanelPropItem) plots the panel for a ITEM property with a button.
It works for all categories. 

The property GUICLASS determines whether the item figure is a 'GUIElement' or 'GUIFig'.

%%% ¡seealso!
uibutton, GUI, PanelElement, GUIElement, GUIFig

%% ¡props_update!

%%% ¡prop!
ELCLASS (constant, string) is the class of the item property panel.
%%%% ¡default!
'PanelPropItem'

%%% ¡prop!
NAME (constant, string) is the name of the item property panel.
%%%% ¡default!
'Item Prop Panel'

%%% ¡prop!
DESCRIPTION (constant, string) is the description of the item property panel.
%%%% ¡default!
'An Item Prop Panel (PanelPropItem) plots the panel for a ITEM property with a button. It works for all categories. The property GUICLASS determines whether the item figure is a ''GUIElement'' or ''GUIFig''.'

%%% ¡prop!
TEMPLATE (parameter, item) is the template of the item property panel.
%%%% ¡settings!
'PanelPropItem'

%%% ¡prop!
ID (data, string) is a few-letter code for the item property panel.
%%%% ¡default!
'PanelPropItem ID'

%%% ¡prop!
LABEL (metadata, string) is an extended label of the item property
    
function cb_button(~, ~)
    gui_item = pr.memorize('GUI_ITEM');

    if ~gui_item.get('DRAWN')
        gui_item.get('DRAW')
        gui_item.get('SHOW')
    else
        if get(gui_item.get('H'), 'Visible')
            gui_item.get('HIDE')
        else
            gui_item.get('SHOW')
        end
    end
end

%%% ¡prop!
GUICLASS (gui, option) is the GUI kind.
%%%% ¡settings!
{'GUIElement', 'GUIFig'}

%%% ¡prop!
GUI_ITEM (data, item) is the handle to the item figure.
%%%% ¡settings!
'GUI'
%%%% ¡preset!
if isequal(value.getClass(), 'GUI') % i.e., default initialization
    switch pr.get('GUICLASS')
        case 'GUIElement'
            f = ancestor(pr.get('H'), 'figure');
            
            el = pr.get('EL');
            prop = pr.get('PROP');

            value = GUIElement( ...
                'PE', el.memorize(prop), ... % ensure that the prop is stored
                'POSITION', [ ...
                    x0(f, 'normalized')+w(f, 'normalized') ...
                    y0(f, 'normalized') ...
                    w(f, 'normalized') ...
                    h(f, 'normalized') ...
                    ], ...
                'WAITBAR', pr.getCallback('WAITBAR'), ...
                'CLOSEREQ', false ...
                );
        case 'GUIFig'
            f = ancestor(pr.get('H'), 'figure');

            el = pr.get('EL');
            prop = pr.get('PROP');

            value = GUIFig( ...
                'PF', el.memorize(prop), ... % ensure that the prop is stored
                'POSITION', [ ...
                    x0(f, 'normalized')+w(f, 'normalized') ...
                    y0(f, 'normalized') ...
                    w(0,'normalized')-x0(f, 'normalized')-w(f, 'normalized') ...
                    h(f, 'normalized') ...
                    ], ...
                'WAITBAR', pr.getCallback('WAITBAR'), ...
                'CLOSEREQ', false ...
                );
    end