anchor.diff:    end;
   
     __ElementsBoxedAnsiChar = public class(NSObject, INSCopying, INSCoding)
  +  private
  +    method stringValue: NSString;
     public
       constructor withAnsiChar(aAnsiChar: AnsiChar);
       class method boxedAnsiCharWithAnsiChar(aAnsiChar: AnsiChar): __ElementsBoxedAnsiChar;
       method description: String; override;
       property ansiCharValue: AnsiChar; readonly;
  +    property stringValue: NSString read stringValue;
       operator Implicit(aValue: __ElementsBoxedAnsiChar): NSNumber;
       operator Implicit(aValue: __ElementsBoxedAnsiChar): AnsiChar;
  +    { 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 }
  
positive.code:   exit lSelf.fValue;
  end;
  
  method __ElementsBoxedStruct.copyWithZone(zone: ^NSZone): not nullable id;
  begin
    raise new NSException("NSCopying is not supported for boxed structs.")
  
negative.code:   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;
  