anchor.diff:    SplitKeyValueTypeName(GetElementName(ClassName), KeyName, ValueName);
     KeyInfo := TClassManager.TypeInfo(KeyName);
     ValueInfo := TClassManager.TypeInfo(ValueName);
  -  if (KeyInfo = nil) or (ValueInfo = nil) then
  +  if not Assigned(KeyInfo) or not Assigned(ValueInfo) then
       raise Exception.Create('Can not serialize ' + ClassName)
     else begin
       FRefer.SetRef(ObjToVar(ADict));
  
positive.code:   ElementName := GetElementName(Name);
    if IsSmartObject(ElementName) then ElementName := 'ISmartObject';
    Info := TClassManager.TypeInfo(ElementName);
    if Info = nil then
      raise Exception.Create('Can not serialize ' + Name)
    else begin
      FRefer.SetRef(NativeInt(Pointer(DynArray)));
  
negative.code:     end
      else for I := 0 to Count - 1 do begin
        PropInfo := GetPropInfo(Instance, AttrNames[I]);
        if Assigned(PropInfo) then
          HproseCommon.SetPropValue(Instance, PropInfo,
                       Unserialize(PropInfo^.PropType{$IFNDEF FPC}^{$ENDIF}))
        else Unserialize;
  