anchor.diff:    exit new __ElementsBoxedChar withChar(aChar);
   end;
   
  +method __ElementsBoxedChar.stringValue: NSString;
  +begin
  +  var char := charValue;
  +  result := NSString.stringWithCharacters(@char) length(1);
  +end;
  +
  +method __ElementsBoxedChar.isEqual(object: id): Boolean;
  +begin
  +  result := isEqualTo(object)
  +end;
  +
  +method __ElementsBoxedChar.isEqualTo(object: id): Boolean;
  +begin
  +  result := ((object is __ElementsBoxedChar) and (charValue = (object as __ElementsBoxedChar).charValue)) or
  +            ((object is __ElementsBoxedAnsiChar) and (charValue = Char((object as __ElementsBoxedAnsiChar).ansiCharValue))) or
  +            ((object is NSString) and (stringValue = (object as NSString)));
  +end;
  +
  +method __ElementsBoxedChar.isGreaterThan(object: id): Boolean;
  +begin
  +  result := ((object is __ElementsBoxedChar) and (charValue > (object as __ElementsBoxedChar).charValue)) or
  +            ((object is __ElementsBoxedAnsiChar) and (charValue > (object as __ElementsBoxedAnsiChar).ansiCharValue)) or
  +            ((object is NSString) and (stringValue > (object as NSString)));
  +end;
  +
  +method __ElementsBoxedChar.isGreaterThanOrEqualTo(object: id): Boolean;
  +begin
  +  result := ((object is __ElementsBoxedChar) and (charValue >= (object as __ElementsBoxedChar).charValue)) or
  +            ((object is __ElementsBoxedAnsiChar) and (charValue >= (object as __ElementsBoxedAnsiChar).ansiCharValue)) or
  +            ((object is NSString) and (stringValue >= (object as NSString)));
  +end;
  +
  +method __ElementsBoxedChar.isLessThan(object: id): Boolean;
  +begin
  +  result := ((object is __ElementsBoxedChar) and (charValue < (object as __ElementsBoxedChar).charValue)) or
  +            ((object is __ElementsBoxedAnsiChar) and (charValue < (object as __ElementsBoxedAnsiChar).ansiCharValue)) or
  +            ((object is NSString) and (stringValue < (object as NSString)));
  +end;
  +
  +method __ElementsBoxedChar.isLessThanOrEqualTo(object: id): Boolean;
  +begin
  +  result := ((object is __ElementsBoxedChar) and (charValue <= (object as __ElementsBoxedChar).charValue)) or
  +            ((object is __ElementsBoxedAnsiChar) and (charValue <= (object as __ElementsBoxedAnsiChar).ansiCharValue)) or
  +            ((object is NSString) and (stringValue <= (object as NSString)));
  +end;
  +
   method __ElementsBoxedChar.copyWithZone(zone: ^NSZone): not nullable id;
   begin
     result := __ElementsBoxedChar.allocWithZone(zone).initWithChar(charValue) as not nullable;
  
positive.code:     class method boxedStructWithValue(aValue: ^Void; aDtor: __ElementsBoxedStructDestructor): __ElementsBoxedStruct;
      class method valueForStruct(aStruct: NSObject; aDtor: __ElementsBoxedStructDestructor): ^Void;
      property Dtor: __ElementsBoxedStructDestructor read fDtor;
      property Value: ^Void read fValue;    
      { INSCopying }
      method copyWithZone(zone: ^NSZone): not nullable id;
      { INSCoding }
  
negative.code:   end;
  
    __ElementsBoxedChar = public class(NSObject, INSCopying, INSCoding)
    private
      method stringValue: NSString;
    public
      constructor withChar(aChar: Char);
      class method boxedCharWithChar(aChar: Char): __ElementsBoxedChar;
      method description: String; override;
      property charValue: Char; readonly;
      property stringValue: NSString read stringValue;
      operator Implicit(aValue: __ElementsBoxedChar): NSNumber;
      operator Implicit(aValue: __ElementsBoxedChar): Char;
      { INSObject }
      method isEqual(object: id): Boolean; override;
      method isEqualTo(object: id): Boolean; override;
      method isGreaterThan(object: id): Boolean; override;
      method isGreaterThanOrEqualTo(object: id): Boolean; override;
      method isLessThan(object: id): Boolean; override;
      method isLessThanOrEqualTo(object: id): Boolean; override;
      { INSCopying }
      method copyWithZone(zone: ^NSZone): not nullable id;
      { INSCoding }
  