private object BuildCore(IType type) { if (type.CanExclude()) { return(null); } switch (type.TypeKind) { case TypeKind.Interface: case TypeKind.Class: case TypeKind.Struct: case TypeKind.Primitive: case TypeKind.Delegate: return(BuildUserType(type)); case TypeKind.GenericParameter: return(null); case TypeKind.Enum: Build(type.ValueType); return(BuildUserType(type)); case TypeKind.Array: return(BuildArrayType(type)); case TypeKind.Pointer: throw new NotSupportedException(); case TypeKind.Reference: { Build(type.ElementType); return(Abc.BuiltinTypes.Object); } } return(null); }