public sealed override void SetFieldDirect(TypedReference typedReference, object value)
 {
     if (RuntimeAugments.IsValueType(this.DeclaringTypeHandle))
     {
         // We're being asked to store a field into the value type pointed to by the TypedReference. This code path
         // bypasses boxing that value type by adding this field's offset to the TypedReference's managed pointer.
         // (Otherwise, the store would go into a useless temporary copy rather than the intended destination.)
         Type targetType = TypedReference.GetTargetType(typedReference);
         if (!(targetType.TypeHandle.Equals(this.DeclaringTypeHandle)))
         {
             throw new ArgumentException();
         }
         value = RuntimeAugments.CheckArgumentForDirectFieldAccess(value, this.FieldTypeHandle);
         UncheckedSetFieldDirectIntoValueType(typedReference, value);
     }
     else
     {
         // We're being asked to store a field from a reference type. There's no boxing to bypass in that case so just handle it as
         // if this was a FieldInfo.SetValue() call (but using SetValueDirect's argument coercing semantics)
         object obj = TypedReference.ToObject(typedReference);
         if (obj == null)
         {
             throw new TargetException(SR.RFLCT_Targ_StatFldReqTarg);
         }
         if (!RuntimeAugments.IsAssignable(obj, this.DeclaringTypeHandle))
         {
             throw new ArgumentException();
         }
         value = RuntimeAugments.CheckArgumentForDirectFieldAccess(value, this.FieldTypeHandle);
         UncheckedSetField(obj, value);
     }
 }
        protected sealed override void SetFieldDirectBypassCctor(object value)
        {
            value = RuntimeAugments.CheckArgumentForDirectFieldAccess(value, FieldTypeHandle);

            if (IsFieldInitOnly)
            {
                throw new FieldAccessException(SR.Acc_InitOnlyStatic);
            }

            UncheckedSetFieldBypassCctor(value);
        }
 protected sealed override void SetFieldDirectBypassCctor(object value)
 {
     value = RuntimeAugments.CheckArgumentForDirectFieldAccess(value, FieldTypeHandle);
     UncheckedSetFieldBypassCctor(value);
 }