code: public function attr()
      {
          $node  = $this->node;
          if (!($node instanceof Element)) {
              return $this;
          }
          
          $count = func_num_args();
          if (!$count) {
              return $this;
          }
          
          $args  = func_get_args();
          $first = $args[0];
          if (($first instanceof ArrayMap) || is_array($first)) {
              $node->setAttributes($first);
          } else {
              $second = (1 < $count) ? $args[1] : null;
              $node->setAttribute($first, $second);
          }
          return $this;
      }
docs: {@link Element::setAttribute()}
  および
  {@link Element::setAttributes()}
  の糖衣構文です.
  引数が配列の場合は setAttributes() を実行し,
  引数が 1 つ以上の文字列の場合は setAttribute() を実行します.
  もしもこのオブジェクトがラップしているノードが Element ではなかった場合,
  このメソッドは何も行いません.
  
  jQuery のようなメソッドチェインを実現するため, このオブジェクト自身を返します.
  
  @param  string|array|ArrayMap $var セットする属性
  @return HelperObject               このオブジェクト自身