private JsBlockStatement CreateProperty(IPropertySymbol property) { var block = new JsBlockStatement(); var propertyName = property.GetMemberName(); var backingField = property.GetBackingFieldName(); var valueParameter = Js.Parameter("value"); block.Add(idioms.StoreInPrototype(backingField, Js.Null())); if (property.GetMethod != null) { block.Add(idioms.StoreInPrototype(property.GetMethod.GetMemberName(), Js.Function().Body(Js.Return(Js.This().Member(backingField))))); } if (property.SetMethod != null) { block.Add(idioms.StoreInPrototype(property.SetMethod.GetMemberName() + propertyName, Js.Function(valueParameter).Body( Js.Assign(Js.This().Member(backingField), valueParameter.GetReference())))); } return(block); }