internal FieldReferenceReflectionEmitter(MemberReferenceExpression memberReferenceExpression, Type target, MemberInfo member, ILGenerator ilGenerator, IOpCodeIndexer instructionsIndexer, IAstVisitor<ILGenerator, AstNode> visitor, List<LocalBuilder> locals, bool isSetter = false) : base(memberReferenceExpression, target, member, ilGenerator, instructionsIndexer, visitor, locals) { FieldReference = MemberReference.Annotation<FieldReference>(); IsByRef = MemberReference.Parent is DirectionExpression; Type = FieldReference.FieldType.GetActualType(); FieldInfo = FieldReference.GetActualField(); NonPublic = !((FieldInfo.Attributes & (_publicFieldAttributes)) == _publicFieldAttributes); if (isSetter) { _emitAction = EmitStoreFieldReference; _emitPrivateAction = EmitPrivateStoreFieldReference; } else { _emitAction = EmitLoadFieldReference; _emitPrivateAction = EmitPrivateLoadFieldReference; } }