%%%%%%% Internal basic commands for package
b\newcommand{\relax}{}
\newcommand{\@empty}{}
\newcommand{\@gooble}[1]{}
\let\@gobble\@gooble
%%%%%% Iter #1 on #3, a #2 separated list of non-empty elements
\def\@iter
  #1#2#3{%
    %\hva@warn{\@iter '#1' '#2' '#3'}%
    \def\@test{#3}%   
    \ifx\@test\@empty\else
      \def\@@iter##1#2{%
        %\hva@warn{\@@iter '##1'}%
        \def\@test{##1}%
        \ifx\@test\@empty
        \let\@next\relax\else
        #1{##1}%
        \let\@next\@@iter\fi
        \@next}%
    \@callsubst{\@@iter}{#3#2#2}\fi}
%%%%%%%%%% eat leading spaces in argument
\def\@eatspaces#1,{#1}%
%%%%%
\newcommand{\@Let}[2]{\ifu#2\else\let#1#2\fi}
\newcommand{\IfDisplay}[2]{\ifdisplay#1\else#2\fi}
\newcommand{\@non@kk}[2][]{}
\newcommand{\@non@k}[1][]{\@non@kk}
\newcommand{\NoCommand}[1]{\@non@k}
%%%shortcuts for defining/using strange csname %%%
\newcommand{\@namedef}[1]{\def\csname#1\endcsname}
\newcommand{\@nameuse}[1]{\csname#1\endcsname}
