code: @SuppressWarnings("rawtypes")
      private boolean hasGroups(final Annotation anno, final Class<?>... groups) {
          
          final Optional<Class[]> targetGroups = Utils.getAnnotationAttribute(anno, "groups", Class[].class);
          
          if(!targetGroups.isPresent()) {
              // groups属性を持たない場合
              return false;
              
          }
          
          if(groups.length == 0) {
              if(targetGroups.get().length == 0) {
                  // グループの指定がない場合は、デフォルトグループとして処理。
                  return true;
                  
              } else {
                  for(Class<?> targetGroup : targetGroups.get()) {
                      if(targetGroup.equals(DefaultGroup.class)) {
                          // デフォルトを直接指定している場合に、グループと一致。
                          return true;
                      }
                  }
              }
              
          } else {
              // グループの指定がある場合
              for(Class<?> group : groups) {
                  
                  if(group.equals(DefaultGroup.class) && targetGroups.get().length == 0) {
                      // フィールド側にグループの指定がない場合は、デフォルトグループとして処理する。
                      return true;
                  }
                  
                  for(Class<?> targetGroup : targetGroups.get()) {
                      // 一致するグループを持つか判定する。
                      if(targetGroup.equals(group)) {
                          return true;
                      }
                  }
                  
              }
              
          }
          
          return false;
          
      }
docs: アノテーションの属性{@literal groups} が指定したグループと一致するか比較します。
  <p>groups属性を持たない場合は、必ずfalseを返します。</p>
  @param anno 検証対象のアノテーション。
  @param groups 比較対象のグループ情報。
  @return {@literal true}の場合、指定したグループを持ちます。