function ud = addUserData( h, varargin )
    ud = get( h, 'UserData' );
    [s,ok] = safemakestruct( mfilename(), varargin );
    if ~ok, return; end
    if isempty(ud) || ~isstruct(ud)
        set( h, 'UserData', s );
    else
        ud = setFromStruct( ud, s );
        set( h, 'UserData', ud );
    end
end
