protected override void setValue(string name, Value value, VisibilityType visibility, bool overriding, bool allowNil, int index) { base.setValue(name, value, visibility, overriding, allowNil, index); if (value is InvokableReference) { return; } var builder = new CodeBuilder(); builder.Parameter("$0"); builder.AssignToField(name, new Variable("$0"), index); var lambda = builder.Lambda(); var setterName = SetterName(name); var invokableName = InvokableName(setterName); State.SetInvokable(invokableName, lambda); base.setValue(setterName, new InvokableReference(invokableName), VisibilityType.Public, false, false, index); removeAbstracts(name); }