anchor.diff:      MetadataType.GenericInstance: exit SigTypeToString(GenericInstanceType(aType).ElementType)+'<'+String.Join(',', GenericInstanceType(aType).GenericArguments.Select(a -> SigTypeToString(a)).ToArray)+'>';
       MetadataType.Object: exit 'object';
       MetadataType.String: exit 'string';
  +    MetadataType.Var,
  +    MetadataType.MVar,
       MetadataType.Class,
       MetadataType.ValueType: exit aType.ToString;
      else
  
positive.code:     'System.IntPtr': exit new CGNamedTypeReference('intptr_t');
      'System.UIntPtr': exit new CGNamedTypeReference('uintptr_t');
    end;
    var lType := aType.Resolve;
    if lType.IsEnum then begin
      if not fEnumTypes.Contains(lType) then begin
        fEnumTypes.Add(lType);
        if not fImportNameMapping.ContainsKey(lType.FullName) then
          fImportNameMapping.Add(lType.FullName, lType.Name);
      end;
      exit new CGNamedTypeReference(lType.Name);
    end;
    if lType.IsValueType and not (lType.IsGenericInstance) and (lType.GenericParameters.Count = 0) then begin
      if not fValueTypes.Contains(lType) Then begin
        fValueTypes.Add(lType);
        if not fImportNameMapping.ContainsKey(lType.FullName) then
          fImportNameMapping.Add(lType.FullName, lType.Name);
      end;
      exit new CGNamedTypeReference(lType.Name);
    end;
    exit new CGPointerTypeReference(new CGNamedTypeReference('MonoObject'));
  end;
  
negative.code:     lTypeDef.Comment := new CGCommentStatement('Import of '+el.FullName+' from '+el.Scope.Name);
      lTypeDef.Visibility := CGTypeVisibilityKind.Public;
  
      for each lConst in el.Resolve.Fields.Where(a->a.IsStatic = false) do begin
        lTypeDef.Members.Add(
          new CGFieldDefinition(lConst.Name, GetMonoType(FixType(el, lConst.FieldType)), Visibility := CGMemberVisibilityKind.Public));
      end;
  
      if not fUnit.Types.Contains(lTypeDef) then
  