anchor.diff:    Result := '[' + Result + ']';
   end;
   
  +
   class function TSet<T>.Cardinality(const Value: T): Integer;
   var
     EnumTypeData: PTypeData;
  
positive.code:   ERuntimeTypeError = class(Exception);
  
    TSet<T> = class
    strict private
      class function TypeInfo: PTypeInfo; inline; static;
      class function GetSetToString(const PSet: PByteArray; const SizeOfSet(*in bytes*): Integer): String; static;
    public
      class function IsSet: Boolean; static;
  
negative.code:   Result := System.TypeInfo(T);
  end;
  
  
  class function TSet<T>.IsSet: Boolean;
  begin
    Result := TypeInfo.Kind = tkSet;
  end;
  
  
  class function TSet<T>.GetCardinality(const PSet: PByteArray; const SizeOfSet(*in bytes*): Integer): Integer;
  var
    I, J: Integer;
  begin
    Result := 0;
    for I := 0 to SizeOfSet - 1 do
      for J := 0 to 7 do
        if (PSet^[I] and BIT_MASKS[J]) > 0 then
          Inc(Result);
  end;
  
  