# System.Reflection

``` diff
 namespace System.Reflection {
     public abstract class FieldInfo : MemberInfo {
-        public override bool Equals(object obj);
+        public override bool Equals(object? obj);
+        public virtual Type GetModifiedFieldType();
-        public virtual object GetRawConstantValue();
+        public virtual object? GetRawConstantValue();
-        public abstract object GetValue(object obj);
+        public abstract object? GetValue(object? obj);
-        [CLSCompliantAttribute(false)]
-        public virtual object GetValueDirect(TypedReference obj);
+        [CLSCompliantAttribute(false)]
+        public virtual object? GetValueDirect(TypedReference obj);
-        public static bool operator ==(FieldInfo left, FieldInfo right);
+        public static bool operator ==(FieldInfo? left, FieldInfo? right);
-        public static bool operator !=(FieldInfo left, FieldInfo right);
+        public static bool operator !=(FieldInfo? left, FieldInfo? right);
-        public void SetValue(object obj, object value);
+        public void SetValue(object? obj, object? value);
-        public abstract void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture);
+        public abstract void SetValue(object? obj, object? value, BindingFlags invokeAttr, Binder? binder, CultureInfo? culture);
     }
     public class ParameterInfo : ICustomAttributeProvider, IObjectReference {
+        public virtual Type GetModifiedParameterType();
     }
     public abstract class PropertyInfo : MemberInfo {
+        public virtual Type GetModifiedPropertyType();
     }
     public class TypeDelegator : TypeInfo {
+        public override bool IsFunctionPointer { get; }
+        public override bool IsUnmanagedFunctionPointer { get; }
+        public override Type[] GetFunctionPointerCallingConventions();
+        public override Type[] GetFunctionPointerParameterTypes();
+        public override Type GetFunctionPointerReturnType();
     }
 }
```

