docs: function buildElementTagClassSwitcher( def, code, varName ) {
      var attName, attValue, classes, classesNames, className;
      for ( attName in def ) {
          classesNames = getSuffix( attName, "class." );
          if ( !classesNames ) continue;
          attValue = def[ attName ];
          if ( classesNames === '*' ) {
              buildElementTagClassSwitcherStar( attValue, code, varName );
              continue;
          }
          if ( !attValue || attValue[ 0 ] !== 'Bind' ) {
              throw "Only bindings are accepted as values for class-switchers!\n" +
                  attName + ": " + JSON.stringify( attValue );
          }
          classes = classesNames.split( "|" );
          const actions = [];
          if ( isNonEmptyString( classes[ 0 ] ) ) {
              code.requires.$ = "require('dom')";
              code.functions[ "addClassIfTrue" ] = "(element, className, value) {\n" +
                  "    if( value ) $.addClass(element, className);\n" +
                  "    else $.removeClass(element, className); };";
              className = JSON.stringify( classes[ 0 ] );
              actions.push( "addClassIfTrue( " + varName + ", " + className + ", v );" );
          }
          if ( isNonEmptyString( classes[ 1 ] ) ) {
              code.requires.$ = "require('dom')";
              code.functions[ "addClassIfFalse" ] = "(element, className, value) {\n" +
                  "    if( value ) $.removeClass(element, className);\n" +
                  "    else $.addClass(element, className); };";
              className = JSON.stringify( classes[ 1 ] );
              actions.push( "addClassIfFalse( " + varName + ", " + className + ", v );" );
          }
          code.addLinkFromBind( attValue, actions );
      }
  }