[
  {
    "path": ".gitignore",
    "content": "packages/\n*.nupkg\n*.suo\n*.userprefs\n*.user\nReactiveUI.Fody/obj/\nReactiveUI.Fody/bin/\nReactiveUI.Fody.Helpers.Net45/obj/\nReactiveUI.Fody.Helpers.Net45/bin/\nReactiveUI.Fody.Helpers.Ios/bin/\nReactiveUI.Fody.Helpers.Ios/obj/\nReactiveUI.Fody.Helpers.Android/bin/\nReactiveUI.Fody.Helpers.Android/obj/\nNuget/ReactiveUI.Fody.1.0.26/\nReactiveUI.Fody.1.0.26/\nReactiveUI.Fody.Helpers.Pcl/obj/\nReactiveUI.Fody.Helpers.Pcl/bin/\nReactiveUI.Fody.Tests/bin/\nReactiveUI.Fody.Tests/obj/\nWeavers/bin/Weavers.dll\nWeavers/bin/Weavers.pdb\n_ReSharper.Caches"
  },
  {
    "path": ".nuget/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"NugetUtilities\" version=\"1.0.16\" />\n</packages>"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Kirk Woll\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "Nuget/ReactiveUIFody.nuspec",
    "content": "\n<package>\n  <metadata>\n    <id>ReactiveUI.Fody</id>\n    <version>2.0.0</version>\n    <authors>kirk</authors>\n    <owners>kirk</owners>\n    <projectUrl>https://github.com/kswoll/ReactiveUI.Fody</projectUrl>\n    <licenseUrl>http://www.opensource.org/licenses/mit-license.php</licenseUrl>\n\t<releaseNotes>Fix some other bugs around properties in generic types.</releaseNotes>\n    <requireLicenseAcceptance>false</requireLicenseAcceptance>\n    <description>Fody extension to generate RaisePropertyChange notifications for properties and ObservableAsPropertyHelper properties.</description>\n    <copyright>Copyright 2015</copyright>\n    <tags>reactiveui fody</tags>\n    <dependencies>\n      <dependency id=\"Fody\" version=\"2.0.7\" />\n\t  <dependency id=\"reactiveui\" version=\"7.0.0\" />\n\t  <dependency id=\"reactiveui-core\" version=\"7.0.0\" />\n\t  <dependency id=\"Splat\" version=\"1.6.0\" />\n    </dependencies>\n  </metadata>\n</package>"
  },
  {
    "path": "ReactiveUI.Fody/CecilExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Mono.Cecil;\nusing Mono.Cecil.Cil;\n\nnamespace ReactiveUI.Fody\n{\n    public static class CecilExtensions\n    {\n        public static void Emit(this MethodBody body, Action<ILProcessor> il)\n        {\n            il(body.GetILProcessor());\n        }\n\n        public static GenericInstanceMethod MakeGenericMethod(this MethodReference method, params TypeReference[] genericArguments)\n        {\n            var result = new GenericInstanceMethod(method);\n            foreach (var argument in genericArguments)\n                result.GenericArguments.Add(argument);\n            return result;\n        }\n\n        public static bool IsAssignableFrom(this TypeReference baseType, TypeReference type, Action<string> logger = null)\n        {\n            return baseType.Resolve().IsAssignableFrom(type.Resolve(), logger);\n        }\n\n        public static bool IsAssignableFrom(this TypeDefinition baseType, TypeDefinition type, Action<string> logger = null)\n        {\n            logger = logger ?? (x => {});\n\n            Queue<TypeDefinition> queue = new Queue<TypeDefinition>();\n            queue.Enqueue(type);\n\n            while (queue.Any())\n            {\n                var current = queue.Dequeue();\n                logger(current.FullName);\n\n                if (baseType.FullName == current.FullName)\n                    return true;\n\n                if (current.BaseType != null)\n                    queue.Enqueue(current.BaseType.Resolve());\n\n                foreach (var @interface in current.Interfaces)\n                {\n                    queue.Enqueue(@interface.InterfaceType.Resolve());\n                }\n            }\n\n            return false;\n        }\n\n        public static bool IsDefined(this IMemberDefinition member, TypeReference attributeType)\n        {\n            return member.HasCustomAttributes && member.CustomAttributes.Any(x => x.AttributeType.FullName == attributeType.FullName);\n        }\n\n        public static MethodReference Bind(this MethodReference method, GenericInstanceType genericType)\n        {\n            var reference = new MethodReference(method.Name, method.ReturnType, genericType);\n            reference.HasThis = method.HasThis;\n            reference.ExplicitThis = method.ExplicitThis;\n            reference.CallingConvention = method.CallingConvention;\n\n            foreach (var parameter in method.Parameters)\n                reference.Parameters.Add(new ParameterDefinition(parameter.ParameterType));\n\n            return reference;\n        }\n        /*\n        public static MethodReference BindDefinition(this MethodReference method, TypeReference genericTypeDefinition)\n        {\n            if (!genericTypeDefinition.HasGenericParameters)\n                return method;\n\n            var genericDeclaration = new GenericInstanceType(genericTypeDefinition);\n            foreach (var parameter in genericTypeDefinition.GenericParameters)\n            {\n                genericDeclaration.GenericArguments.Add(parameter);\n            }\n            var reference = new MethodReference(method.Name, method.ReturnType, genericDeclaration);\n            reference.HasThis = method.HasThis;\n            reference.ExplicitThis = method.ExplicitThis;\n            reference.CallingConvention = method.CallingConvention;\n\n            foreach (var parameter in method.Parameters)\n                reference.Parameters.Add(new ParameterDefinition(parameter.ParameterType));\n\n            return reference;\n        }\n        */\n        public static FieldReference BindDefinition(this FieldReference field, TypeReference genericTypeDefinition)\n        {\n            if (!genericTypeDefinition.HasGenericParameters)\n                return field;\n\n            var genericDeclaration = new GenericInstanceType(genericTypeDefinition);\n            foreach (var parameter in genericTypeDefinition.GenericParameters)\n            {\n                genericDeclaration.GenericArguments.Add(parameter);\n            }\n            var reference = new FieldReference(field.Name, field.FieldType, genericDeclaration);\n            return reference;\n        }\n\n        public static AssemblyNameReference FindAssembly(this ModuleDefinition currentModule, string assemblyName)\n        {\n            return currentModule.AssemblyReferences.SingleOrDefault(x => x.Name == assemblyName);\n        }\n\n        public static TypeReference FindType(this ModuleDefinition currentModule, string @namespace, string typeName, IMetadataScope scope = null, params string[] typeParameters)\n        {\n            var result = new TypeReference(@namespace, typeName, currentModule, scope);\n            foreach (var typeParameter in typeParameters)\n            {\n                result.GenericParameters.Add(new GenericParameter(typeParameter, result));\n            }\n            return result;\n        }\n\n        public static bool CompareTo(this TypeReference type, TypeReference compareTo)\n        {\n            return type.FullName == compareTo.FullName;\n        }\n\n        public static IEnumerable<MethodDefinition> GetMethodDependencies(this MethodDefinition method)\n        {\n            if (!method.IsGetter) return Enumerable.Empty<MethodDefinition>();\n\n            return method.Body.Instructions.Where(i =>\n                {\n                    var operand = i.Operand as MethodDefinition;\n                    return i.OpCode == OpCodes.Call && (operand?.IsGetter ?? false);\n                })\n                .SelectMany(instruction =>\n                {\n                    var methodDefinition = (MethodDefinition) instruction.Operand;\n                    return methodDefinition.GetMethodDependencies().Concat(new[] { methodDefinition });\n                });\n        }\n\n        public static bool TryGetMethodDependencies(this MethodDefinition method, out MethodDefinition[] getMethods)\n        {\n            getMethods = method.GetMethodDependencies()\n                .Distinct()\n                .ToArray();\n\n            return getMethods.Any();\n        }\n\n/*\n\n        public static IEnumerable<TypeDefinition> GetAllTypes(this ModuleDefinition module)\n        {\n            var stack = new Stack<TypeDefinition>();\n            foreach (var type in module.Types)\n            {\n                stack.Push(type);\n            }\n            while (stack.Any())\n            {\n                var current = stack.Pop();\n                yield return current;\n\n                foreach (var nestedType in current.NestedTypes)\n                {\n                    stack.Push(nestedType);\n                }\n            }\n        }\n*/\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody/ModuleWeaver.cs",
    "content": "﻿using System;\nusing Mono.Cecil;\n\nnamespace ReactiveUI.Fody\n{\n    public class ModuleWeaver\n    {\n        public ModuleDefinition ModuleDefinition { get; set; }\n\n        // Will log an MessageImportance.High message to MSBuild. \n        public Action<string> LogInfo  { get; set; }\n\n        // Will log an error message to MSBuild. OPTIONAL\n        public Action<string> LogError { get; set; }\n\n        public void Execute()\n        {\n            var propertyWeaver = new ReactiveUIPropertyWeaver\n            {\n                ModuleDefinition = ModuleDefinition,\n                LogInfo = LogInfo,\n                LogError = LogError\n            };\n            propertyWeaver.Execute();\n\n            var observableAsPropertyWeaver = new ObservableAsPropertyWeaver\n            {\n                ModuleDefinition = ModuleDefinition,\n                LogInfo = LogInfo\n            };\n            observableAsPropertyWeaver.Execute();\n\n            var reactiveDependencyWeaver = new ReactiveDependencyPropertyWeaver\n            {\n                ModuleDefinition = ModuleDefinition,\n                LogInfo = LogInfo,\n                LogError = LogError\n            };\n            reactiveDependencyWeaver.Execute();\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody/ObservableAsPropertyWeaver.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Mono.Cecil;\nusing Mono.Cecil.Cil;\nusing Mono.Cecil.Rocks;\n\nnamespace ReactiveUI.Fody\n{\n    public class ObservableAsPropertyWeaver\n    {\n        public ModuleDefinition ModuleDefinition { get; set; }\n\n        // Will log an MessageImportance.High message to MSBuild. OPTIONAL\n        public Action<string> LogInfo  { get; set; }\n\n        public void Execute()\n        {\n            var reactiveUI = ModuleDefinition.AssemblyReferences.Where(x => x.Name == \"ReactiveUI\").OrderByDescending(x => x.Version).FirstOrDefault();\n            if (reactiveUI == null)\n            {\n                LogInfo(\"Could not find assembly: ReactiveUI (\" + string.Join(\", \", ModuleDefinition.AssemblyReferences.Select(x => x.Name)) + \")\");\n                return;\n            }\n            LogInfo($\"{reactiveUI.Name} {reactiveUI.Version}\");\n            var helpers = ModuleDefinition.AssemblyReferences.Where(x => x.Name == \"ReactiveUI.Fody.Helpers\").OrderByDescending(x => x.Version).FirstOrDefault();\n            if (helpers == null)\n            {\n                LogInfo(\"Could not find assembly: ReactiveUI.Fody.Helpers (\" + string.Join(\", \", ModuleDefinition.AssemblyReferences.Select(x => x.Name)) + \")\");\n                return;\n            }\n            LogInfo($\"{helpers.Name} {helpers.Version}\");\n\n            var reactiveObject = ModuleDefinition.FindType(\"ReactiveUI\", \"ReactiveObject\", reactiveUI);\n\n            // The types we will scan are subclasses of ReactiveObject\n            var targetTypes = ModuleDefinition.GetAllTypes().Where(x => x.BaseType != null && reactiveObject.IsAssignableFrom(x.BaseType));\n\n            var observableAsPropertyHelper = ModuleDefinition.FindType(\"ReactiveUI\", \"ObservableAsPropertyHelper`1\", reactiveUI, \"T\");\n            var observableAsPropertyAttribute = ModuleDefinition.FindType(\"ReactiveUI.Fody.Helpers\", \"ObservableAsPropertyAttribute\", helpers);\n            var observableAsPropertyHelperGetValue = ModuleDefinition.ImportReference(observableAsPropertyHelper.Resolve().Properties.Single(x => x.Name == \"Value\").GetMethod);\n            var exceptionType = ModuleDefinition.ImportReference(typeof(Exception));\n            var exceptionConstructor = ModuleDefinition.ImportReference(exceptionType.Resolve().GetConstructors().Single(x => x.Parameters.Count == 1));\n\n            foreach (var targetType in targetTypes)\n            {\n                foreach (var property in targetType.Properties.Where(x => x.IsDefined(observableAsPropertyAttribute) || (x.GetMethod?.IsDefined(observableAsPropertyAttribute) ?? false)).ToArray())\n                {\n                    var genericObservableAsPropertyHelper = observableAsPropertyHelper.MakeGenericInstanceType(property.PropertyType);\n                    var genericObservableAsPropertyHelperGetValue = observableAsPropertyHelperGetValue.Bind(genericObservableAsPropertyHelper);\n                    ModuleDefinition.ImportReference(genericObservableAsPropertyHelperGetValue);\n\n                    // Declare a field to store the property value\n                    var field = new FieldDefinition(\"$\" + property.Name, FieldAttributes.Private, genericObservableAsPropertyHelper);\n                    targetType.Fields.Add(field);\n\n                    // It's an auto-property, so remove the generated field\n                    if (property.SetMethod != null && property.SetMethod.HasBody)\n                    {\n                        // Remove old field (the generated backing field for the auto property)\n                        var oldField = (FieldReference)property.GetMethod.Body.Instructions.Where(x => x.Operand is FieldReference).Single().Operand;\n                        var oldFieldDefinition = oldField.Resolve();\n                        targetType.Fields.Remove(oldFieldDefinition);\n\n                        // Re-implement setter to throw an exception\n                        property.SetMethod.Body = new MethodBody(property.SetMethod);\n                        property.SetMethod.Body.Emit(il =>\n                        {\n                            il.Emit(OpCodes.Ldstr, \"Never call the setter of an ObservabeAsPropertyHelper property.\");\n                            il.Emit(OpCodes.Newobj, exceptionConstructor);\n                            il.Emit(OpCodes.Throw);\n                            il.Emit(OpCodes.Ret);\n                        });\n                    }\n\n                    property.GetMethod.Body = new MethodBody(property.GetMethod);\n                    property.GetMethod.Body.Emit(il =>\n                    {\n                        var isValid = il.Create(OpCodes.Nop);\n                        il.Emit(OpCodes.Ldarg_0);                                               // this\n                        il.Emit(OpCodes.Ldfld, field.BindDefinition(targetType));               // pop -> this.$PropertyName\n                        il.Emit(OpCodes.Dup);                                                   // Put an extra copy of this.$PropertyName onto the stack\n                        il.Emit(OpCodes.Brtrue, isValid);                                       // If the helper is null, return the default value for the property\n                        il.Emit(OpCodes.Pop);                                                   // Drop this.$PropertyName\n                        EmitDefaultValue(property.GetMethod.Body, il, property.PropertyType);   // Put the default value onto the stack\n                        il.Emit(OpCodes.Ret);                                                   // Return that default value\n                        il.Append(isValid);                                                     // Add a marker for if the helper is not null\n                        il.Emit(OpCodes.Callvirt, genericObservableAsPropertyHelperGetValue);   // pop -> this.$PropertyName.Value\n                        il.Emit(OpCodes.Ret);                                                   // Return the value that is on the stack\n                    });\n                }\n            }\n        }\n\n        public void EmitDefaultValue(MethodBody methodBody, ILProcessor il, TypeReference type)\n        {\n            if (type.CompareTo(ModuleDefinition.TypeSystem.Boolean) || type.CompareTo(ModuleDefinition.TypeSystem.Byte) ||\n                type.CompareTo(ModuleDefinition.TypeSystem.Int16) || type.CompareTo(ModuleDefinition.TypeSystem.Int32))\n            {\n                il.Emit(OpCodes.Ldc_I4_0);\n            }\n            else if (type.CompareTo(ModuleDefinition.TypeSystem.Single))\n            {\n                il.Emit(OpCodes.Ldc_R4, (float)0);\n            }\n            else if (type.CompareTo(ModuleDefinition.TypeSystem.Int64))\n            {\n                il.Emit(OpCodes.Ldc_I8, (long)0);\n            }\n            else if (type.CompareTo(ModuleDefinition.TypeSystem.Double))\n            {\n                il.Emit(OpCodes.Ldc_R8, (double)0);\n            }\n            else if (type.IsGenericParameter || type.IsValueType)\n            {\n                methodBody.InitLocals = true;\n                var local = new VariableDefinition(type);\n                il.Body.Variables.Add(local);\n                il.Emit(OpCodes.Ldloca_S, local);\n                il.Emit(OpCodes.Initobj, type);\n                il.Emit(OpCodes.Ldloc, local);\n            }\n            else\n            {\n                il.Emit(OpCodes.Ldnull);\n            }\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ReactiveUI.Fody\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ReactiveUI.Fody\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"0171c060-b220-4e4d-af25-2e2fc92e9267\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "ReactiveUI.Fody/ReactiveDependencyPropertyWeaver.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Mono.Cecil;\nusing Mono.Cecil.Cil;\nusing Mono.Cecil.Rocks;\n\nnamespace ReactiveUI.Fody\n{\n    public class ReactiveDependencyPropertyWeaver\n    {\n        public ModuleDefinition ModuleDefinition { get; set; }\n\n        // Will log an MessageImportance.High message to MSBuild. OPTIONAL\n        public Action<string> LogInfo { get; set; }\n\n        // Will log an error message to MSBuild. OPTIONAL\n        public Action<string> LogError { get; set; }\n\n        public void Execute()\n        {\n            var reactiveUI = ModuleDefinition.AssemblyReferences.Where(x => x.Name == \"ReactiveUI\").OrderByDescending(x => x.Version).FirstOrDefault();\n            if (reactiveUI == null)\n            {\n                LogInfo(\"Could not find assembly: ReactiveUI (\" + string.Join(\", \", ModuleDefinition.AssemblyReferences.Select(x => x.Name)) + \")\");\n                return;\n            }\n            LogInfo($\"{reactiveUI.Name} {reactiveUI.Version}\");\n            var helpers = ModuleDefinition.AssemblyReferences.Where(x => x.Name == \"ReactiveUI.Fody.Helpers\").OrderByDescending(x => x.Version).FirstOrDefault();\n            if (helpers == null)\n            {\n                LogInfo(\"Could not find assembly: ReactiveUI.Fody.Helpers (\" + string.Join(\", \", ModuleDefinition.AssemblyReferences.Select(x => x.Name)) + \")\");\n                return;\n            }\n            LogInfo($\"{helpers.Name} {helpers.Version}\");\n            var reactiveObject = new TypeReference(\"ReactiveUI\", \"IReactiveObject\", ModuleDefinition, reactiveUI);\n\n            var targetTypes = ModuleDefinition.GetAllTypes().Where(x => x.BaseType != null && reactiveObject.IsAssignableFrom(x.BaseType)).ToArray();\n            var reactiveObjectExtensions = new TypeReference(\"ReactiveUI\", \"IReactiveObjectExtensions\", ModuleDefinition, reactiveUI).Resolve();\n            if (reactiveObjectExtensions == null) throw new Exception(\"reactiveObjectExtensions is null\");\n\n            var raisePropertyChangedMethod = ModuleDefinition.ImportReference(reactiveObjectExtensions.Methods.Single(x => x.Name == \"RaisePropertyChanged\"));\n            if (raisePropertyChangedMethod == null) throw new Exception(\"raisePropertyChangedMethod is null\");\n\n            var reactiveDependencyAttribute = ModuleDefinition.FindType(\"ReactiveUI.Fody.Helpers\", \"ReactiveDependencyAttribute\", helpers);\n            if (reactiveDependencyAttribute == null) throw new Exception(\"reactiveDecoratorAttribute is null\");\n\n            foreach (var targetType in targetTypes.Where(x => x.Properties.Any(y => y.IsDefined(reactiveDependencyAttribute))).ToArray())\n            {\n                foreach (var facadeProperty in targetType.Properties.Where(x => x.IsDefined(reactiveDependencyAttribute)).ToArray())\n                {\n                    // If the property already has a body then do not weave to prevent loss of instructions\n                    if (!facadeProperty.GetMethod.Body.Instructions.Any(x => x.Operand is FieldReference) || facadeProperty.GetMethod.Body.HasVariables)\n                    {\n                        LogError($\"Property {facadeProperty.Name} is not an auto property and therefore not suitable for ReactiveDependency weaving\");\n                        continue;\n                    }\n\n                    var attribute = facadeProperty.CustomAttributes.First(x => x.AttributeType.FullName == reactiveDependencyAttribute.FullName);\n\n                    var targetNamedArgument = attribute.ConstructorArguments.FirstOrDefault();\n                    var targetValue = targetNamedArgument.Value?.ToString();\n                    if (string.IsNullOrEmpty(targetValue))\n                    {\n                        LogError(\"No target property defined on the object\");\n                        continue;\n                    }\n\n                    if (targetType.Properties.All(x => x.Name != targetValue) && targetType.Fields.All(x => x.Name != targetValue))\n                    {\n                        LogError($\"dependency object property/field name '{targetValue}' not found on target type {targetType.Name}\");\n                        continue;\n                    }\n\n                    var objPropertyTarget = targetType.Properties.FirstOrDefault(x => x.Name == targetValue);\n                    var objFieldTarget = targetType.Fields.FirstOrDefault(x => x.Name == targetValue);\n\n                    var objDependencyTargetType = objPropertyTarget != null\n                        ? objPropertyTarget.PropertyType.Resolve()\n                        : objFieldTarget?.FieldType.Resolve();\n\n                    if(objDependencyTargetType == null)\n                    {\n                        LogError(\"Couldn't result the dependency type\");\n                        continue;\n                    }\n\n                    // Look for the target property on the member obj\n                    var destinationPropertyNamedArgument = attribute.Properties.FirstOrDefault(x => x.Name == \"TargetProperty\");\n                    var destinationPropertyName = destinationPropertyNamedArgument.Argument.Value?.ToString();\n\n                    // If no target property was specified use this property's name as the target on the decorated object (ala a decorated property)\n                    if (string.IsNullOrEmpty(destinationPropertyName)) destinationPropertyName = facadeProperty.Name;\n\n                    if (objDependencyTargetType.Properties.All(x => x.Name != destinationPropertyName))\n                    {\n                        LogError($\"Target property {destinationPropertyName} on dependency of type {objDependencyTargetType.DeclaringType.Name} not found\");\n                        continue;\n                    }\n\n                    var destinationProperty = objDependencyTargetType.Properties.First(x => x.Name == destinationPropertyName);\n\n                    // The property on the facade/decorator should have a setter\n                    if (facadeProperty.SetMethod == null)\n                    {\n                        LogError($\"Property {facadeProperty.DeclaringType.FullName}.{facadeProperty.Name} has no setter, therefore it is not possible for the property to change, and thus should not be marked with [ReactiveDecorator]\");\n                        continue;\n                    }\n\n                    // The property on the dependency should have a setter e.g. Dependency.SomeProperty = value;\n                    if (destinationProperty.SetMethod == null)\n                    {\n                        LogError($\"Dependency object's property {destinationProperty.DeclaringType.FullName}.{destinationProperty.Name} has no setter, therefore it is not possible for the property to change, and thus should not be marked with [ReactiveDecorator]\");\n                        continue;\n                    }\n\n                    // Remove old field (the generated backing field for the auto property)\n                    var oldField = (FieldReference)facadeProperty.GetMethod.Body.Instructions.Where(x => x.Operand is FieldReference).Single().Operand;\n                    var oldFieldDefinition = oldField.Resolve();\n                    targetType.Fields.Remove(oldFieldDefinition);\n\n                    // See if there exists an initializer for the auto-property\n                    var constructors = targetType.Methods.Where(x => x.IsConstructor);\n                    foreach (var constructor in constructors)\n                    {\n                        var fieldAssignment = constructor.Body.Instructions.SingleOrDefault(x => Equals(x.Operand, oldFieldDefinition) || Equals(x.Operand, oldField));\n                        if (fieldAssignment != null)\n                        {\n                            // Replace field assignment with a property set (the stack semantics are the same for both,\n                            // so happily we don't have to manipulate the bytecode any further.)\n                            var setterCall = constructor.Body.GetILProcessor().Create(facadeProperty.SetMethod.IsVirtual ? OpCodes.Callvirt : OpCodes.Call, facadeProperty.SetMethod);\n                            constructor.Body.GetILProcessor().Replace(fieldAssignment, setterCall);\n                        }\n                    }\n\n                    // Build out the getter which simply returns the value of the generated field\n                    facadeProperty.GetMethod.Body = new MethodBody(facadeProperty.GetMethod);\n                    facadeProperty.GetMethod.Body.Emit(il =>\n                    {\n                        il.Emit(OpCodes.Ldarg_0);                                   // this\n                        if (objPropertyTarget != null)\n                        {\n                            il.Emit(objPropertyTarget.GetMethod.IsVirtual ? OpCodes.Callvirt : OpCodes.Call, objPropertyTarget.GetMethod);\n                        }\n                        else\n                        {\n                            il.Emit(OpCodes.Ldfld, objFieldTarget);\n                        }\n                        il.Emit(destinationProperty.GetMethod.IsVirtual ? OpCodes.Callvirt : OpCodes.Call, destinationProperty.GetMethod);\n                        il.Emit(OpCodes.Ret);\n                    });\n\n                    TypeReference genericTargetType = targetType;\n                    if (targetType.HasGenericParameters)\n                    {\n                        var genericDeclaration = new GenericInstanceType(targetType);\n                        foreach (var parameter in targetType.GenericParameters)\n                        {\n                            genericDeclaration.GenericArguments.Add(parameter);\n                        }\n                        genericTargetType = genericDeclaration;\n                    }\n\n                    var methodReference = raisePropertyChangedMethod.MakeGenericMethod(genericTargetType);\n                    facadeProperty.SetMethod.Body = new MethodBody(facadeProperty.SetMethod);\n                    facadeProperty.SetMethod.Body.Emit(il =>\n                    {\n                        il.Emit(OpCodes.Ldarg_0);\n                        if (objPropertyTarget != null)\n                        {\n                            il.Emit(objPropertyTarget.GetMethod.IsVirtual ? OpCodes.Callvirt : OpCodes.Call, objPropertyTarget.GetMethod);\n                        }\n                        else\n                        {\n                            il.Emit(OpCodes.Ldfld, objFieldTarget);\n                        }\n                        il.Emit(OpCodes.Ldarg_1);\n                        il.Emit(destinationProperty.SetMethod.IsVirtual ? OpCodes.Callvirt : OpCodes.Call, destinationProperty.SetMethod);       // Set the nested property\n                        il.Emit(OpCodes.Ldarg_0);\n                        il.Emit(OpCodes.Ldstr, facadeProperty.Name);                // \"PropertyName\"\n                        il.Emit(OpCodes.Call, methodReference);                     // this.RaisePropertyChanged(\"PropertyName\")\n                        il.Emit(OpCodes.Ret);\n                    });\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ReactiveUI.Fody/ReactiveUI.Fody.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ReactiveUI.Fody</RootNamespace>\n    <AssemblyName>ReactiveUI.Fody</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <LangVersion>6</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Mono.Cecil, Version=0.10.0.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\FodyCecil.2.0.9\\lib\\net40\\Mono.Cecil.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Mono.Cecil.Mdb, Version=0.10.0.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\FodyCecil.2.0.9\\lib\\net40\\Mono.Cecil.Mdb.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Mono.Cecil.Pdb, Version=0.10.0.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\FodyCecil.2.0.9\\lib\\net40\\Mono.Cecil.Pdb.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Mono.Cecil.Rocks, Version=0.10.0.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\FodyCecil.2.0.9\\lib\\net40\\Mono.Cecil.Rocks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Reactive.Core\">\n      <HintPath>..\\packages\\Rx-Core.2.2.5\\lib\\net45\\System.Reactive.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Interfaces\">\n      <HintPath>..\\packages\\Rx-Interfaces.2.2.5\\lib\\net45\\System.Reactive.Interfaces.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Linq\">\n      <HintPath>..\\packages\\Rx-Linq.2.2.5\\lib\\net45\\System.Reactive.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.PlatformServices\">\n      <HintPath>..\\packages\\Rx-PlatformServices.2.2.5\\lib\\net45\\System.Reactive.PlatformServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Windows.Threading\">\n      <HintPath>..\\packages\\Rx-XAML.2.2.5\\lib\\net45\\System.Reactive.Windows.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"WindowsBase\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"CecilExtensions.cs\" />\n    <Compile Include=\"ModuleWeaver.cs\" />\n    <Compile Include=\"ObservableAsPropertyWeaver.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ReactiveDependencyPropertyWeaver.cs\" />\n    <Compile Include=\"ReactiveUIPropertyWeaver.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ReactiveUI.Fody/ReactiveUIPropertyWeaver.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Mono.Cecil;\nusing Mono.Cecil.Cil;\nusing Mono.Cecil.Rocks;\n\nnamespace ReactiveUI.Fody\n{\n    /// <summary>\n    /// Weaver that replaces properties marked with `[DataMember]` on subclasses of `ReactiveObject` with an\n    /// implementation that invokes `RaisePropertyChanged` as is required for reaciveui.\n    /// </summary>\n    public class ReactiveUIPropertyWeaver\n    {\n        public ModuleDefinition ModuleDefinition { get; set; }\n\n        // Will log an MessageImportance.High message to MSBuild. OPTIONAL\n        public Action<string> LogInfo  { get; set; }\n\n        // Will log an error message to MSBuild. OPTIONAL\n        public Action<string> LogError { get; set; }\n\n        public void Execute()\n        {\n            var reactiveUI = ModuleDefinition.AssemblyReferences.Where(x => x.Name == \"ReactiveUI\").OrderByDescending(x => x.Version).FirstOrDefault();\n            if (reactiveUI == null)\n            {\n                LogInfo(\"Could not find assembly: ReactiveUI (\" + string.Join(\", \", ModuleDefinition.AssemblyReferences.Select(x => x.Name)) + \")\");\n                return;\n            }\n            LogInfo($\"{reactiveUI.Name} {reactiveUI.Version}\");\n            var helpers = ModuleDefinition.AssemblyReferences.Where(x => x.Name == \"ReactiveUI.Fody.Helpers\").OrderByDescending(x => x.Version).FirstOrDefault();\n            if (helpers == null)\n            {\n                LogInfo(\"Could not find assembly: ReactiveUI.Fody.Helpers (\" + string.Join(\", \", ModuleDefinition.AssemblyReferences.Select(x => x.Name)) + \")\");\n                return;\n            }\n            LogInfo($\"{helpers.Name} {helpers.Version}\");\n            var reactiveObject = new TypeReference(\"ReactiveUI\", \"IReactiveObject\", ModuleDefinition, reactiveUI);\n            var targetTypes = ModuleDefinition.GetAllTypes().Where(x => x.BaseType != null && reactiveObject.IsAssignableFrom(x.BaseType)).ToArray();\n            var reactivePropertyExtensions = ModuleDefinition.FindType(\"ReactiveUI.Fody.Helpers\", \"ReactivePropertyExtensions\", helpers).Resolve();\n            if (reactivePropertyExtensions == null)\n                throw new Exception(\"reactivePropertyExtensions is null\");\n\n            var raiseAndSetIfChangedMethod = ModuleDefinition.ImportReference(reactivePropertyExtensions.Methods.Single(x => x.Name == \"RaiseAndSetIfChanged\"));\n            if (raiseAndSetIfChangedMethod == null)\n                throw new Exception(\"raiseAndSetIfChangedMethod is null\");\n\n            var reactiveAttribute = ModuleDefinition.FindType(\"ReactiveUI.Fody.Helpers\", \"ReactiveAttribute\", helpers);\n            if (reactiveAttribute == null)\n                throw new Exception(\"reactiveAttribute is null\");\n\n            var reactiveObjectExtensions = new TypeReference(\"ReactiveUI\", \"IReactiveObjectExtensions\", ModuleDefinition, reactiveUI).Resolve();\n            if (reactiveObjectExtensions == null)\n                throw new Exception(\"reactiveObjectExtensions is null\");\n\n            var raisePropertyChangedMethod = ModuleDefinition.ImportReference(reactiveObjectExtensions.Methods.Single(x => x.Name == \"RaisePropertyChanged\"));\n            if (raisePropertyChangedMethod == null)\n                throw new Exception(\"raisePropertyChangedMethod is null\");\n\n            foreach (var targetType in targetTypes)\n            {\n                var setMethodByGetMethods = targetType.Properties\n                    .Where(x => x.SetMethod != null && x.GetMethod != null && x.IsDefined(reactiveAttribute))\n                    .ToDictionary(x => x.GetMethod, x => x.SetMethod);\n\n                foreach (var property in targetType.Properties.Where(x => x.IsDefined(reactiveAttribute)).ToArray())\n                {\n                    TypeReference genericTargetType = targetType;\n                    if (targetType.HasGenericParameters)\n                    {\n                        var genericDeclaration = new GenericInstanceType(targetType);\n                        foreach (var parameter in targetType.GenericParameters)\n                        {\n                            genericDeclaration.GenericArguments.Add(parameter);\n                        }\n                        genericTargetType = genericDeclaration;\n                    }\n\n                    MethodDefinition[] getMethods;\n                    if (property.SetMethod == null && property.GetMethod.TryGetMethodDependencies(out getMethods))\n                    {\n                        var setMethodsForGetInstructions = getMethods\n                            .Where(x => setMethodByGetMethods.ContainsKey(x))\n                            .Select(x => setMethodByGetMethods[x])\n                            .ToArray();\n\n                        if (!setMethodsForGetInstructions.Any())\n                        {\n                            LogError($\"Get only Property {property.DeclaringType.FullName}.{property.Name} has no supported dependent properties. \" +\n                                     $\"Only dependent auto properties decorated with the [Reactive] attribute can be weaved to raise property change on {property.Name}\");\n                        }\n\n                        var raisePropertyChangedMethodReference = raisePropertyChangedMethod.MakeGenericMethod(genericTargetType);\n\n                        foreach (var method in setMethodsForGetInstructions)\n                        {\n                            method.Body.Emit(il =>\n                            {\n                                var last = method.Body.Instructions.Last(i => i.OpCode == OpCodes.Ret);\n                                il.InsertBefore(last, il.Create(OpCodes.Ldarg_0));\n                                il.InsertBefore(last, il.Create(OpCodes.Ldstr, property.Name));\n                                il.InsertBefore(last, il.Create(OpCodes.Call, raisePropertyChangedMethodReference));\n                            });\n                        }\n\n                        // Move on to next property for the target type\n                        continue;\n                    }\n\n                    if (property.SetMethod == null)\n                    {\n                        LogError($\"Property {property.DeclaringType.FullName}.{property.Name} has no setter, therefore it is not possible for the property to change, and thus should not be marked with [Reactive]\");\n                        continue;\n                    }\n\n                    // Declare a field to store the property value\n                    var field = new FieldDefinition(\"$\" + property.Name, FieldAttributes.Private, property.PropertyType);\n                    targetType.Fields.Add(field);\n\n                    // Remove old field (the generated backing field for the auto property)\n                    var oldField = (FieldReference)property.GetMethod.Body.Instructions.Where(x => x.Operand is FieldReference).Single().Operand;\n                    var oldFieldDefinition = oldField.Resolve();\n                    targetType.Fields.Remove(oldFieldDefinition);\n\n                    // See if there exists an initializer for the auto-property\n                    var constructors = targetType.Methods.Where(x => x.IsConstructor);\n                    foreach (var constructor in constructors)\n                    {\n                        var fieldAssignment = constructor.Body.Instructions.SingleOrDefault(x => Equals(x.Operand, oldFieldDefinition) || Equals(x.Operand, oldField));\n                        if (fieldAssignment != null)\n                        {\n                            // Replace field assignment with a property set (the stack semantics are the same for both,\n                            // so happily we don't have to manipulate the bytecode any further.)\n                            var setterCall = constructor.Body.GetILProcessor().Create(property.SetMethod.IsVirtual ? OpCodes.Callvirt : OpCodes.Call, property.SetMethod);\n                            constructor.Body.GetILProcessor().Replace(fieldAssignment, setterCall);\n                        }\n                    }\n\n                    // Build out the getter which simply returns the value of the generated field\n                    property.GetMethod.Body = new MethodBody(property.GetMethod);\n                    property.GetMethod.Body.Emit(il =>\n                    {\n                        il.Emit(OpCodes.Ldarg_0);                                   // this\n                        il.Emit(OpCodes.Ldfld, field.BindDefinition(targetType));   // pop -> this.$PropertyName\n                        il.Emit(OpCodes.Ret);                                       // Return the field value that is lying on the stack\n                    });\n\n                    var methodReference = raiseAndSetIfChangedMethod.MakeGenericMethod(genericTargetType, property.PropertyType);\n\n                    // Build out the setter which fires the RaiseAndSetIfChanged method\n                    if (property.SetMethod == null)\n                    {\n                        throw new Exception(\"[Reactive] is decorating \" + property.DeclaringType.FullName + \".\" + property.Name + \", but the property has no setter so there would be nothing to react to.  Consider removing the attribute.\");\n                    }\n                    property.SetMethod.Body = new MethodBody(property.SetMethod);\n                    property.SetMethod.Body.Emit(il =>\n                    {\n                        RaiseAndSetIfChanged(methodReference, targetType, field, il, property.Name);\n                    });\n                }\n            }\n        }\n\n        private void RaiseAndSetIfChanged(MethodReference raiseAndSetIfChangedMethod, TypeDefinition targetType, FieldDefinition field, ILProcessor il, string propertyName)\n        {\n            il.Emit(OpCodes.Ldarg_0);                                   // this\n            il.Emit(OpCodes.Ldarg_0);                                   // this\n            il.Emit(OpCodes.Ldflda, field.BindDefinition(targetType));  // pop -> ref this.$PropertyName\n            il.Emit(OpCodes.Ldarg_1);                                   // value\n            il.Emit(OpCodes.Ldstr, propertyName);                      // \"PropertyName\"\n            il.Emit(OpCodes.Call, raiseAndSetIfChangedMethod);                     // pop * 4 -> this.RaiseAndSetIfChanged(this.$PropertyName, value, \"PropertyName\")\n            il.Emit(OpCodes.Pop);                                       // We don't care about the result of RaiseAndSetIfChanged, so pop it off the stack (stack is now empty)\n            il.Emit(OpCodes.Ret);                                       // Return out of the function\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"FodyCecil\" version=\"2.0.9\" targetFramework=\"net45\" developmentDependency=\"true\" />\n  <package id=\"NugetUtilities\" version=\"1.0.16\" targetFramework=\"net45\" />\n  <package id=\"reactiveui-core\" version=\"7.0.0\" targetFramework=\"net45\" />\n  <package id=\"Rx-Core\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Interfaces\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Linq\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Main\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-PlatformServices\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-XAML\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Splat\" version=\"1.6.0\" targetFramework=\"net45\" />\n</packages>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/LogPropertyOnErrorException.cs",
    "content": "﻿using System;\n\nnamespace ReactiveUI.Fody.Helpers\n{\n    public class LogPropertyOnErrorException : Exception\n    {\n        public new object Source { get; }\n        public string Property { get; }\n\n        public LogPropertyOnErrorException(object source, string property, Exception innerException) :\n            base($\"An exception occurred when a property change notification was fired on {source.GetType().FullName}.{property} on an instance of {source.GetType().FullName}: {source}\", innerException)\n        {\n            Source = source;\n            Property = property;\n        }\n    }\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/LogPropertyOnErrorObservable.cs",
    "content": "﻿using System;\n\nnamespace ReactiveUI.Fody.Helpers\n{\n    internal class LogPropertyOnErrorObservable<T> : IObservable<T>\n    {\n        private readonly IObservable<T> @this;\n        private readonly object source;\n        private readonly string property;\n\n        public LogPropertyOnErrorObservable(IObservable<T> @this, object source, string property)\n        {\n            this.@this = @this;\n            this.source = source;\n            this.property = property;\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            return @this.Subscribe(new LogPropertyOnErrorObserver(observer, source, property));\n        }\n\n        private class LogPropertyOnErrorObserver : IObserver<T>\n        {\n            private readonly IObserver<T> @this;\n            private readonly object source;\n            private readonly string property;\n\n            public LogPropertyOnErrorObserver(IObserver<T> @this, object source, string property)\n            {\n                this.@this = @this;\n                this.source = source;\n                this.property = property;\n            }\n\n            public void OnCompleted()\n            {\n                @this.OnCompleted();\n            }\n\n            public void OnError(Exception error)\n            {\n                @this.OnError(new LogPropertyOnErrorException(source, property, error));\n            }\n\n            public void OnNext(T value)\n            {\n                @this.OnNext(value);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/ObservableAsPropertyAttribute.cs",
    "content": "﻿using System;\n\nnamespace ReactiveUI.Fody.Helpers\n{\n    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]\n    public class ObservableAsPropertyAttribute : Attribute\n    {\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/ObservableAsPropertyExtensions.cs",
    "content": "﻿using System;\nusing System.Linq.Expressions;\nusing System.Reactive.Concurrency;\nusing System.Reflection;\nusing ReactiveUI.Fody.Helpers.Settings;\n\nnamespace ReactiveUI.Fody.Helpers\n{\n    public static class ObservableAsPropertyExtensions\n    {\n        public static ObservableAsPropertyHelper<TRet> ToPropertyEx<TObj, TRet>(this IObservable<TRet> @this, TObj source, Expression<Func<TObj, TRet>> property, TRet initialValue = default(TRet), bool deferSubscription = false, IScheduler scheduler = null) where TObj : ReactiveObject\n        {\n            // Now assign the field via reflection.\n            var propertyInfo = property.GetPropertyInfo();\n            if (propertyInfo == null)\n                throw new Exception(\"Could not resolve expression \" + property + \" into a property.\");\n\n            if (GlobalSettings.IsLogPropertyOnErrorEnabled)\n                @this = new LogPropertyOnErrorObservable<TRet>(@this, source, propertyInfo.Name);\n\n            var result = @this.ToProperty(source, property, initialValue, deferSubscription, scheduler);\n\n            var field = propertyInfo.DeclaringType.GetTypeInfo().GetDeclaredField(\"$\" + propertyInfo.Name);\n            if (field == null)\n                throw new Exception(\"Backing field not found for \" + propertyInfo);\n\n            field.SetValue(source, result);\n\n            return result;\n        }\n\n        static PropertyInfo GetPropertyInfo(this LambdaExpression expression)\n        {\n            var current = expression.Body;\n            var unary = current as UnaryExpression;\n            if (unary != null)\n                current = unary.Operand;\n            var call = (MemberExpression)current;\n            return (PropertyInfo)call.Member;\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/ReactiveAttribute.cs",
    "content": "﻿using System;\n\nnamespace ReactiveUI.Fody.Helpers\n{\n    [AttributeUsage(AttributeTargets.Property)]\n    public class ReactiveAttribute : Attribute\n    {\n    }\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/ReactiveDependencyAttribute.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace ReactiveUI.Fody.Helpers\n{\n    [AttributeUsage(AttributeTargets.Property)]\n    public class ReactiveDependencyAttribute : Attribute\n    {\n        private readonly string _targetName;\n\n        public ReactiveDependencyAttribute(string targetName)\n        {\n            _targetName = targetName;\n        }\n\n        /// <summary>\n        /// The name of the backing property\n        /// </summary>\n        public string Target => _targetName;\n\n        /// <summary>\n        /// Target property on the backing property\n        /// </summary>\n        public string TargetProperty { get; set; }\n    }\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/ReactivePropertyExtensions.cs",
    "content": "﻿using System;\nusing System.Reflection;\nusing ReactiveUI.Fody.Helpers.Settings;\n\nnamespace ReactiveUI.Fody.Helpers\n{\n    public static class ReactivePropertyExtensions\n    {\n        public static TRet RaiseAndSetIfChanged<TObj, TRet>(this TObj @this, ref TRet backingField, TRet newValue, string propertyName = null) where TObj : IReactiveObject\n        {\n            if (GlobalSettings.IsLogPropertyOnErrorEnabled)\n            {\n                try\n                {\n                    return IReactiveObjectExtensions.RaiseAndSetIfChanged(@this, ref backingField, newValue, propertyName);\n                }\n                catch (Exception ex)\n                {\n                    throw new LogPropertyOnErrorException(@this, propertyName, ex);\n                }\n            }\n            else\n            {\n                return IReactiveObjectExtensions.RaiseAndSetIfChanged(@this, ref backingField, newValue, propertyName);\n            }\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/ReactiveUI.Fody.Helpers.projitems",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>\n    <HasSharedItems>true</HasSharedItems>\n    <SharedGUID>4433ff2e-3150-4d7f-be18-a2258799b79d</SharedGUID>\n  </PropertyGroup>\n  <PropertyGroup Label=\"Configuration\">\n    <Import_RootNamespace>ReactiveUI.Fody.Helpers</Import_RootNamespace>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"$(MSBuildThisFileDirectory)LogPropertyOnErrorException.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)LogPropertyOnErrorObservable.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)ObservableAsPropertyAttribute.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)ObservableAsPropertyExtensions.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)ReactiveAttribute.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)ReactiveDependencyAttribute.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)ReactivePropertyExtensions.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)Settings\\GlobalSettings.cs\" />\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/ReactiveUI.Fody.Helpers.shproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup Label=\"Globals\">\n    <ProjectGuid>4433ff2e-3150-4d7f-be18-a2258799b79d</ProjectGuid>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\CodeSharing\\Microsoft.CodeSharing.Common.Default.props\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\CodeSharing\\Microsoft.CodeSharing.Common.props\" />\n  <PropertyGroup />\n  <Import Project=\"ReactiveUI.Fody.Helpers.projitems\" Label=\"Shared\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\CodeSharing\\Microsoft.CodeSharing.CSharp.targets\" />\n</Project>\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers/Settings/GlobalSettings.cs",
    "content": "﻿namespace ReactiveUI.Fody.Helpers.Settings\n{\n    public static class GlobalSettings\n    {\n        public static bool IsLogPropertyOnErrorEnabled { get; set; }\n    }\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Android/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\nusing Android.App;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ReactiveUI.Fody.Helpers\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ReactiveUI.Fody.Helpers\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n[assembly: ComVisible(false)]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Android/ReactiveUI.Fody.Helpers.Android.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{6D2A6846-A8B7-4186-807D-12E335BD1C67}</ProjectGuid>\n    <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ReactiveUI.Fody.Helpers</RootNamespace>\n    <AssemblyName>ReactiveUI.Fody.Helpers</AssemblyName>\n    <FileAlignment>512</FileAlignment>\n    <AndroidResgenFile>Resources\\Resource.Designer.cs</AndroidResgenFile>\n    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>\n    <AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>\n    <DevInstrumentationEnabled>True</DevInstrumentationEnabled>\n    <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Mono.Android\" />\n    <Reference Include=\"mscorlib\" />\n    <Reference Include=\"ReactiveUI, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\reactiveui-core.7.0.0\\lib\\portable-net45+netcore45+wpa81+win8+wp8+UAP10+MonoAndroid403+MonoTouch10+Xamarin.iOS10\\ReactiveUI.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Splat\">\n      <HintPath>..\\packages\\Splat.1.6.0\\lib\\monoandroid\\Splat.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Reactive.Core\">\n      <HintPath>..\\packages\\Rx-Core.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Interfaces\">\n      <HintPath>..\\packages\\Rx-Interfaces.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.Interfaces.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Linq\">\n      <HintPath>..\\packages\\Rx-Linq.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.PlatformServices\">\n      <HintPath>..\\packages\\Rx-PlatformServices.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.PlatformServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Resources\\Resource.Designer.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n    <None Include=\"Resources\\AboutResources.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AndroidResource Include=\"Resources\\Values\\Strings.xml\" />\n  </ItemGroup>\n  <Import Project=\"..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems\" Label=\"Shared\" Condition=\"Exists('..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems')\" />\n  <Import Project=\"$(MSBuildExtensionsPath)\\Xamarin\\Android\\Xamarin.Android.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Android/Resources/AboutResources.txt",
    "content": "Images, layout descriptions, binary blobs and string dictionaries can be included \nin your application as resource files.  Various Android APIs are designed to \noperate on the resource IDs instead of dealing with images, strings or binary blobs \ndirectly.\n\nFor example, a sample Android app that contains a user interface layout (main.xml),\nan internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) \nwould keep its resources in the \"Resources\" directory of the application:\n\nResources/\n    drawable-hdpi/\n        icon.png\n\n    drawable-ldpi/\n        icon.png\n\n    drawable-mdpi/\n        icon.png\n\n    layout/\n        main.xml\n\n    values/\n        strings.xml\n\nIn order to get the build system to recognize Android resources, set the build action to\n\"AndroidResource\".  The native Android APIs do not operate directly with filenames, but \ninstead operate on resource IDs.  When you compile an Android application that uses resources, \nthe build system will package the resources for distribution and generate a class called\n\"Resource\" that contains the tokens for each one of the resources included. For example, \nfor the above Resources layout, this is what the Resource class would expose:\n\npublic class Resource {\n    public class drawable {\n        public const int icon = 0x123;\n    }\n\n    public class layout {\n        public const int main = 0x456;\n    }\n\n    public class strings {\n        public const int first_string = 0xabc;\n        public const int second_string = 0xbcd;\n    }\n}\n\nYou would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main \nto reference the layout/main.xml file, or Resource.strings.first_string to reference the first \nstring in the dictionary file values/strings.xml."
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Android/Resources/Resource.Designer.cs",
    "content": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\n[assembly: global::Android.Runtime.ResourceDesignerAttribute(\"ReactiveUI.Fody.Helpers.Resource\", IsApplication=false)]\n\nnamespace ReactiveUI.Fody.Helpers\n{\n\t\n\t\n\t[System.CodeDom.Compiler.GeneratedCodeAttribute(\"Xamarin.Android.Build.Tasks\", \"1.0.0.0\")]\n\tpublic partial class Resource\n\t{\n\t\t\n\t\tstatic Resource()\n\t\t{\n\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t}\n\t\t\n\t\tpublic partial class Attribute\n\t\t{\n\t\t\t\n\t\t\tstatic Attribute()\n\t\t\t{\n\t\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t\t}\n\t\t\t\n\t\t\tprivate Attribute()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic partial class String\n\t\t{\n\t\t\t\n\t\t\t// aapt resource value: 0x7f020002\n\t\t\tpublic static int ApplicationName = 2130837506;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f020001\n\t\t\tpublic static int Hello = 2130837505;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f020000\n\t\t\tpublic static int library_name = 2130837504;\n\t\t\t\n\t\t\tstatic String()\n\t\t\t{\n\t\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t\t}\n\t\t\t\n\t\t\tprivate String()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t}\n}\n#pragma warning restore 1591\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Android/Resources/Values/Strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"Hello\">Hello World, Click Me!</string>\n    <string name=\"ApplicationName\">$projectname$</string>\n</resources>\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Android/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"reactiveui\" version=\"7.0.0\" targetFramework=\"MonoAndroid22\" />\n  <package id=\"reactiveui-core\" version=\"7.0.0\" targetFramework=\"MonoAndroid22\" />\n  <package id=\"Rx-Core\" version=\"2.2.5\" targetFramework=\"MonoAndroid22\" />\n  <package id=\"Rx-Interfaces\" version=\"2.2.5\" targetFramework=\"MonoAndroid22\" />\n  <package id=\"Rx-Linq\" version=\"2.2.5\" targetFramework=\"MonoAndroid22\" />\n  <package id=\"Rx-Main\" version=\"2.2.5\" targetFramework=\"MonoAndroid22\" />\n  <package id=\"Rx-PlatformServices\" version=\"2.2.5\" targetFramework=\"MonoAndroid22\" />\n  <package id=\"Splat\" version=\"1.6.0\" targetFramework=\"MonoAndroid22\" />\n</packages>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Ios/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ReactiveUI.Fody.Helpers.Ios\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ReactiveUI.Fody.Helpers.Ios\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"2986e217-fe12-4070-8926-fe6ac596094e\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Ios/ReactiveUI.Fody.Helpers.Ios.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">iPhoneSimulator</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{377C39ED-0F7E-4522-A41E-96C5BA0C4FCB}</ProjectGuid>\n    <ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <OutputType>Library</OutputType>\n    <RootNamespace>ReactiveUI.Fody.Helpers</RootNamespace>\n    <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>\n    <AssemblyName>ReactiveUI.Fody.Helpers</AssemblyName>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\iPhone\\Debug</OutputPath>\n    <DefineConstants>DEBUG</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <ConsolePause>false</ConsolePause>\n    <MtouchDebug>true</MtouchDebug>\n    <CodesignKey>iPhone Developer</CodesignKey>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>none</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\iPhone\\Release</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <ConsolePause>false</ConsolePause>\n    <CodesignKey>iPhone Developer</CodesignKey>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"ReactiveUI, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\reactiveui-core.7.0.0\\lib\\portable-net45+netcore45+wpa81+win8+wp8+UAP10+MonoAndroid403+MonoTouch10+Xamarin.iOS10\\ReactiveUI.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Splat\">\n      <HintPath>..\\packages\\Splat.1.6.0\\lib\\Xamarin.iOS10\\Splat.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Reactive.Core\">\n      <HintPath>..\\packages\\Rx-Core.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Interfaces\">\n      <HintPath>..\\packages\\Rx-Interfaces.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.Interfaces.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Linq\">\n      <HintPath>..\\packages\\Rx-Linq.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.PlatformServices\">\n      <HintPath>..\\packages\\Rx-PlatformServices.2.2.5\\lib\\portable-windows8+net45+wp8\\System.Reactive.PlatformServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"Xamarin.iOS\" />\n  </ItemGroup>\n  <Import Project=\"..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems\" Label=\"Shared\" Condition=\"Exists('..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems')\" />\n  <Import Project=\"$(MSBuildExtensionsPath)\\Xamarin\\iOS\\Xamarin.iOS.CSharp.targets\" />\n</Project>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Ios/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"reactiveui\" version=\"7.0.0\" targetFramework=\"xamarinios10\" />\n  <package id=\"reactiveui-core\" version=\"7.0.0\" targetFramework=\"xamarinios10\" />\n  <package id=\"Rx-Core\" version=\"2.2.5\" targetFramework=\"xamarinios10\" />\n  <package id=\"Rx-Interfaces\" version=\"2.2.5\" targetFramework=\"xamarinios10\" />\n  <package id=\"Rx-Linq\" version=\"2.2.5\" targetFramework=\"xamarinios10\" />\n  <package id=\"Rx-Main\" version=\"2.2.5\" targetFramework=\"xamarinios10\" />\n  <package id=\"Rx-PlatformServices\" version=\"2.2.5\" targetFramework=\"xamarinios10\" />\n  <package id=\"Splat\" version=\"1.6.0\" targetFramework=\"xamarinios10\" />\n</packages>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Net45/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ReactiveUI.Fody.Helpers.Net45\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ReactiveUI.Fody.Helpers.Net45\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"525a89d6-cbd1-4776-9692-952d32f01e28\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Net45/ReactiveUI.Fody.Helpers.Net45.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{1CA52110-BE45-4C45-B709-28061077E2A5}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ReactiveUI.Fody.Helpers</RootNamespace>\n    <AssemblyName>ReactiveUI.Fody.Helpers</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"ReactiveUI, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\reactiveui-core.7.0.0\\lib\\portable-net45+netcore45+wpa81+win8+wp8+UAP10+MonoAndroid403+MonoTouch10+Xamarin.iOS10\\ReactiveUI.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Splat\">\n      <HintPath>..\\packages\\Splat.1.6.0\\lib\\Net45\\Splat.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Reactive.Core\">\n      <HintPath>..\\packages\\Rx-Core.2.2.5\\lib\\net45\\System.Reactive.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Interfaces\">\n      <HintPath>..\\packages\\Rx-Interfaces.2.2.5\\lib\\net45\\System.Reactive.Interfaces.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Linq\">\n      <HintPath>..\\packages\\Rx-Linq.2.2.5\\lib\\net45\\System.Reactive.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.PlatformServices\">\n      <HintPath>..\\packages\\Rx-PlatformServices.2.2.5\\lib\\net45\\System.Reactive.PlatformServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Windows.Threading\">\n      <HintPath>..\\packages\\Rx-XAML.2.2.5\\lib\\net45\\System.Reactive.Windows.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"WindowsBase\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems\" Label=\"Shared\" Condition=\"Exists('..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems')\" />\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Net45/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"reactiveui\" version=\"7.0.0\" targetFramework=\"net45\" />\n  <package id=\"reactiveui-core\" version=\"7.0.0\" targetFramework=\"net45\" />\n  <package id=\"Rx-Core\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Interfaces\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Linq\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Main\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-PlatformServices\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-XAML\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Splat\" version=\"1.6.0\" targetFramework=\"net45\" />\n</packages>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Pcl/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Resources;\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ReactiveUI.Fody.Helpers.Pcl\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ReactiveUI.Fody.Helpers.Pcl\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n[assembly: NeutralResourcesLanguage(\"en\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Pcl/ReactiveUI.Fody.Helpers.Pcl.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8509509A-17C7-4CF0-84AD-5DD208446766}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ReactiveUI.Fody.Helpers</RootNamespace>\n    <AssemblyName>ReactiveUI.Fody.Helpers</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <TargetFrameworkProfile>Profile259</TargetFrameworkProfile>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"ReactiveUI, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\reactiveui-core.7.0.0\\lib\\portable-net45+netcore45+wpa81+win8+wp8+UAP10+MonoAndroid403+MonoTouch10+Xamarin.iOS10\\ReactiveUI.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Splat\">\n      <HintPath>..\\packages\\Splat.1.6.0\\lib\\Portable-net45+win+wpa81+wp80\\Splat.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Core\">\n      <HintPath>..\\packages\\Rx-Core.2.2.5\\lib\\portable-net45+winrt45+wp8+wpa81\\System.Reactive.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Interfaces\">\n      <HintPath>..\\packages\\Rx-Interfaces.2.2.5\\lib\\portable-net45+winrt45+wp8+wpa81\\System.Reactive.Interfaces.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.Linq\">\n      <HintPath>..\\packages\\Rx-Linq.2.2.5\\lib\\portable-net45+winrt45+wp8+wpa81\\System.Reactive.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reactive.PlatformServices\">\n      <HintPath>..\\packages\\Rx-PlatformServices.2.2.5\\lib\\portable-net45+winrt45+wp8+wpa81\\System.Reactive.PlatformServices.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems\" Label=\"Shared\" Condition=\"Exists('..\\ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems')\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\Portable\\$(TargetFrameworkVersion)\\Microsoft.Portable.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ReactiveUI.Fody.Helpers.Pcl/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"reactiveui\" version=\"7.0.0\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n  <package id=\"reactiveui-core\" version=\"7.0.0\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n  <package id=\"Rx-Core\" version=\"2.2.5\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n  <package id=\"Rx-Interfaces\" version=\"2.2.5\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n  <package id=\"Rx-Linq\" version=\"2.2.5\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n  <package id=\"Rx-Main\" version=\"2.2.5\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n  <package id=\"Rx-PlatformServices\" version=\"2.2.5\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n  <package id=\"Splat\" version=\"1.6.0\" targetFramework=\"portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\" />\n</packages>"
  },
  {
    "path": "ReactiveUI.Fody.Tests/FodyWeavers.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Weavers>\n    <ObservableAsPropertyWeaver />\n    <ReactiveUIPropertyWeaver />\n    <ReactiveDependencyPropertyWeaver />\n</Weavers>"
  },
  {
    "path": "ReactiveUI.Fody.Tests/Issues/Issue10Tests.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing ReactiveUI.Fody.Helpers;\n\nnamespace ReactiveUI.Fody.Tests.Issues\n{\n    [TestFixture]\n    public class Issue10Tests\n    {\n        [Test]\n        public void UninitializedObservableAsPropertyHelperDoesntThrowAndReturnsDefaultValue()\n        {\n            var model = new TestModel();\n            Assert.AreEqual(null, model.MyProperty);\n            Assert.AreEqual(0, model.MyIntProperty);\n            Assert.AreEqual(default(DateTime), model.MyDateTimeProperty);\n        }\n\n        class TestModel : ReactiveObject\n        {\n            [ObservableAsProperty]\n            public string MyProperty { get; private set; }\n\n            [ObservableAsProperty]\n            public int MyIntProperty { get; private set; }\n\n            [ObservableAsProperty]\n            public DateTime MyDateTimeProperty { get; private set; }\n\n            public string OtherProperty { get; private set; }\n\n            public TestModel()\n            {\n                OtherProperty = MyProperty;\n            }\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Tests/Issues/Issue11Tests.cs",
    "content": "﻿using System.Reactive.Linq;\nusing NUnit.Framework;\nusing ReactiveUI.Fody.Helpers;\n\nnamespace ReactiveUI.Fody.Tests.Issues\n{\n    [TestFixture]\n    public class Issue11Tests\n    {\n        [Test]\n        public void AllowObservableAsPropertyAttributeOnAccessor()\n        {\n            var model = new TestModel(\"foo\");\n            Assert.AreEqual(\"foo\", model.MyProperty);\n        }\n\n        public class TestModel : ReactiveObject\n        {\n            public extern string MyProperty { [ObservableAsProperty]get; }\n\n            public TestModel(string myProperty)\n            {\n                Observable.Return(myProperty).ToPropertyEx(this, x => x.MyProperty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Tests/Issues/Issue13Tests.cs",
    "content": "﻿using NUnit.Framework;\nusing ReactiveUI.Fody.Helpers;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reactive.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace ReactiveUI.Fody.Tests.Issues\n{\n    [TestFixture]\n    public class Issue13Tests\n    {\n        [Test]\n        public void AccessingAChainedObservableAsPropertyOfDoubleDoesntThrow()\n        {\n            var vm = new VM();\n            Assert.AreEqual(0.0, vm.P2);\n        }\n\n        class VM : ReactiveObject\n        {\n            [ObservableAsProperty] public double P1 { get; }\n            [ObservableAsProperty] public double P2 { get; }\n\n            public VM()\n            {\n                Observable.Return(0.0).ToPropertyEx(this, vm => vm.P1);\n                this.WhenAnyValue(vm => vm.P1).ToPropertyEx(this, vm => vm.P2);\n            }\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Tests/Issues/Issue31Tests.cs",
    "content": "﻿using System;\nusing System.Reactive.Linq;\nusing NUnit.Framework;\nusing ReactiveUI.Fody.Helpers;\nusing GlobalSettings = ReactiveUI.Fody.Helpers.Settings.GlobalSettings;\n\nnamespace ReactiveUI.Fody.Tests.Issues\n{\n    [TestFixture]\n    public class Issue31Tests\n    {\n        [Test]\n        public void ExceptionPropertyInfoForReactiveProperty()\n        {\n            try\n            {\n                GlobalSettings.IsLogPropertyOnErrorEnabled = true;\n\n                try\n                {\n                    var model = new ReactivePropertyModel();\n                    model.MyProperty = \"foo\";\n                    Assert.Fail();\n                }\n                catch (LogPropertyOnErrorException ex)\n                {\n                    Assert.AreEqual(nameof(ObservableAsPropertyModel.MyProperty), ex.Property);\n                }\n            }\n            finally\n            {\n                GlobalSettings.IsLogPropertyOnErrorEnabled = false;\n            }\n        }\n\n        [Test]\n        public void ExceptionPropertyInfoForObservableAsProperty()\n        {\n            try\n            {\n                GlobalSettings.IsLogPropertyOnErrorEnabled = true;\n\n                try\n                {\n                    new ObservableAsPropertyModel();\n                    Assert.Fail();\n                }\n                catch (UnhandledErrorException ex)\n                {\n                    var propertyException = (LogPropertyOnErrorException)ex.InnerException;\n                    Assert.AreEqual(nameof(ObservableAsPropertyModel.MyProperty), propertyException.Property);\n                }\n            }\n            finally\n            {\n                GlobalSettings.IsLogPropertyOnErrorEnabled = false;\n            }\n        }\n\n        public class ObservableAsPropertyModel : ReactiveObject\n        {\n            public extern string MyProperty { [ObservableAsProperty]get; }\n\n            public ObservableAsPropertyModel()\n            {\n                Observable.Throw<string>(new Exception(\"Observable error\")).ToPropertyEx(this, x => x.MyProperty);\n            }\n        }\n\n        public class ReactivePropertyModel : ReactiveObject\n        {\n            [Reactive]public string MyProperty { get; set; }\n\n            public ReactivePropertyModel()\n            {\n                this.ObservableForProperty(x => x.MyProperty).Subscribe(_ =>\n                {\n                    throw new Exception(\"Subscribe error\");\n                });\n            }\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Tests/Issues/Issue41Tests.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing NUnit.Framework;\nusing ReactiveUI.Fody.Helpers;\n\nnamespace ReactiveUI.Fody.Tests.Issues\n{\n    [TestFixture]\n    public class Issue41Tests\n    {\n        [Test]\n        public void PropertyChangedRaisedForDerivedPropertyOnIntPropertySet()\n        {\n            // Arrange\n            var model = new TestModel();\n            var expectedInpcPropertyName = nameof(TestModel.DerivedProperty);\n            var receivedInpcPropertyNames = new List<string>();\n\n            var inpc = (INotifyPropertyChanged) model;\n            inpc.PropertyChanged += (sender, args) => receivedInpcPropertyNames.Add(args.PropertyName);\n\n            // Act\n            model.IntProperty = 5;\n\n            // Assert\n            Assert.IsTrue(receivedInpcPropertyNames.Contains(expectedInpcPropertyName));\n        }\n\n        [Test]\n        public void PropertyChangedRaisedOnStringPropertySet()\n        {\n            // Arrange\n            var model = new TestModel();\n            var expectedInpcPropertyName = nameof(TestModel.DerivedProperty);\n            var receivedInpcPropertyNames = new List<string>();\n\n            var inpc = (INotifyPropertyChanged) model;\n            inpc.PropertyChanged += (sender, args) => receivedInpcPropertyNames.Add(args.PropertyName);\n\n            // Act\n            model.StringProperty = \"Foo\";\n\n            // Assert\n            Assert.IsTrue(receivedInpcPropertyNames.Contains(expectedInpcPropertyName));\n        }\n\n        [Test]\n        public void PropertyChangedRaisedForDerivedPropertyAndAnotherExpressionBodiedPropertyAndCombinedExpressionBodyPropertyWithAutoPropOnIntPropertySet()\n        {\n            // Arrange\n            var model = new TestModel();\n            var expectedInpcPropertyName1 = nameof(TestModel.AnotherExpressionBodiedProperty);\n            var expectedInpcPropertyName2 = nameof(TestModel.DerivedProperty);\n            var expectedInpcPropertyName3 = nameof(TestModel.CombinedExpressionBodyPropertyWithAutoProp);\n            var receivedInpcPropertyNames = new List<string>();\n\n            var inpc = (INotifyPropertyChanged) model;\n            inpc.PropertyChanged += (sender, args) => receivedInpcPropertyNames.Add(args.PropertyName);\n\n            // Act\n            model.IntProperty = 5;\n\n            // Assert\n            Assert.IsTrue(receivedInpcPropertyNames.Contains(expectedInpcPropertyName1));\n            Assert.IsTrue(receivedInpcPropertyNames.Contains(expectedInpcPropertyName2));\n            Assert.IsTrue(receivedInpcPropertyNames.Contains(expectedInpcPropertyName3));\n        }\n\n        [Test]\n        public void PropertyChangedRaisedForCombinedExpressionBodyPropertyWithAutoPropOnStringPropertySet()\n        {\n            // Arrange\n            var model = new TestModel();\n            var expectedInpcPropertyName = nameof(TestModel.CombinedExpressionBodyPropertyWithAutoProp);\n            var receivedInpcPropertyNames = new List<string>();\n\n            var inpc = (INotifyPropertyChanged)model;\n            inpc.PropertyChanged += (sender, args) => receivedInpcPropertyNames.Add(args.PropertyName);\n\n            // Act\n            model.StringProperty = \"Foo\";\n\n            // Assert\n            Assert.IsTrue(receivedInpcPropertyNames.Contains(expectedInpcPropertyName));\n        }\n\n        [Test]\n        public void PropertyChangedRaisedForCombinedExpressionBodyPropertyWithAutoPropNonReactivePropertyOnIntPropertySet()\n        {\n            // Arrange\n            var model = new TestModel();\n            var expectedInpcPropertyName = nameof(TestModel.CombinedExpressionBodyPropertyWithAutoPropNonReactiveProperty);\n            var receivedInpcPropertyNames = new List<string>();\n\n            var inpc = (INotifyPropertyChanged)model;\n            inpc.PropertyChanged += (sender, args) => receivedInpcPropertyNames.Add(args.PropertyName);\n\n            // Act\n            model.IntProperty = 5;\n\n            // Assert\n            Assert.IsTrue(receivedInpcPropertyNames.Contains(expectedInpcPropertyName));\n        }\n\n        [Test]\n        // Ensure that this only works with dependent properties that have the [Reactive] attribute\n        public void PropertyChangedNotRaisedForCombinedExpressionBodyPropertyWithAutoPropNonReactivePropertyOnNonReactivePropertySet()\n        {\n            // Arrange\n            var model = new TestModel();\n            var expectedInpcPropertyName = nameof(TestModel.CombinedExpressionBodyPropertyWithAutoPropNonReactiveProperty);\n            var receivedInpcPropertyNames = new List<string>();\n\n            var inpc = (INotifyPropertyChanged)model;\n            inpc.PropertyChanged += (sender, args) => receivedInpcPropertyNames.Add(args.PropertyName);\n\n            // Act\n            model.NonReactiveProperty = \"Foo\";\n\n            // Assert\n            Assert.IsEmpty(receivedInpcPropertyNames);\n        }\n\n        class TestModel : ReactiveObject\n        {\n            [Reactive]\n            public int IntProperty { get; set; }\n\n            [Reactive]\n            public string StringProperty { get; set; }\n\n            public string NonReactiveProperty { get; set; }\n\n            [Reactive]\n            // Raise property change when either StringProperty or IntProperty are set\n            public string DerivedProperty => StringProperty + IntProperty;\n\n            [Reactive]\n            // Raise property change when IntProperty is set\n            public int AnotherExpressionBodiedProperty => IntProperty;\n\n            [Reactive]\n            // Raise property changed when StringProperty or IntProperty is set (as AnotherExpressionBodiedProperty is dependent upon IntProperty)\n            public string CombinedExpressionBodyPropertyWithAutoProp => AnotherExpressionBodiedProperty + StringProperty;\n\n            [Reactive]\n            public string CombinedExpressionBodyPropertyWithAutoPropNonReactiveProperty => CombinedExpressionBodyPropertyWithAutoProp + NonReactiveProperty;\n        }\n    }\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Tests/Issues/Issue47Tests.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing ReactiveUI.Fody.Helpers;\n\nnamespace ReactiveUI.Fody.Tests.Issues\n{\n\tpublic class Issue47Tests\n\t{\n\t\t/// <summary>\n\t\t/// The \"test\" here is simply for these to compile\n\t\t/// Tests ObservableAsPropertyWeaver.EmitDefaultValue\n\t\t/// </summary>\n\t\tclass TestModel : ReactiveObject\n\t\t{\n\t\t\tpublic extern int IntProperty { [ObservableAsProperty] get; }\n\t\t\tpublic extern double DoubleProperty { [ObservableAsProperty] get; }\n\t\t\tpublic extern float FloatProperty { [ObservableAsProperty] get; }\n\t\t\tpublic extern long LongProperty { [ObservableAsProperty] get; }\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "ReactiveUI.Fody.Tests/ObservableAsPropertyTests.cs",
    "content": "﻿using System.Reactive.Linq;\nusing NUnit.Framework;\nusing ReactiveUI.Fody.Helpers;\n\nnamespace ReactiveUI.Fody.Tests\n{\n    public class ObservableAsPropertyTests\n    {\n        [Test]\n        public void TestPropertyReturnsFoo()\n        {\n            var model = new TestModel();\n            Assert.AreEqual(\"foo\", model.TestProperty);\n        }\n\n        class TestModel : ReactiveObject\n        {\n            [ObservableAsProperty]\n            public string TestProperty { get; private set; }\n\n            public TestModel()\n            {\n                Observable.Return(\"foo\").ToPropertyEx(this, x => x.TestProperty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Tests/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ReactiveUI.Fody.Tests\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ReactiveUI.Fody.Tests\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"a735c110-6877-4c3a-8056-9abc5fb2dd91\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "ReactiveUI.Fody.Tests/ReactiveDependencyTests.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing NUnit.Framework;\nusing ReactiveUI.Fody.Helpers;\n\nnamespace ReactiveUI.Fody.Tests\n{\n    public class ReactiveDependencyTests\n    {\n        [Test]\n        public void IntPropertyOnWeavedFacadeReturnsBaseModelIntPropertyDefaultValueTest()\n        {\n            var model = new BaseModel();\n            var expectedResult = model.IntProperty;\n\n            var facade = new FacadeModel(model);\n\n            Assert.AreEqual(expectedResult, facade.IntProperty);\n        }\n\n        [Test]\n        public void AnotherStringPropertyOnFacadeReturnsBaseModelStringPropertyDefaultValueTest()\n        {\n            var model = new BaseModel();\n            var expectedResult = model.StringProperty;\n\n            var facade = new FacadeModel(model);\n\n            Assert.AreEqual(expectedResult, facade.AnotherStringProperty);\n        }\n\n        [Test]\n        public void SettingAnotherStringPropertyUpdatesTheDependencyStringProperty()\n        {\n            var expectedResult = \"New String Value\";\n            var facade = new FacadeModel(new BaseModel());\n\n            facade.AnotherStringProperty = expectedResult;\n\n            Assert.AreEqual(expectedResult, facade.Dependency.StringProperty);\n        }\n\n        [Test]\n        public void SettingFacadeIntPropertyUpdatesDependencyIntProperty()\n        {\n            var expectedResult = 999;\n            var facade = new FacadeModel(new BaseModel());\n\n            facade.IntProperty = expectedResult;\n\n            Assert.AreEqual(expectedResult, facade.Dependency.IntProperty);\n        }\n\n        [Test]\n        public void FacadeIntPropertyChangedEventFiresOnAssignementTest()\n        {\n            var expectedPropertyChanged = \"IntProperty\";\n            var resultPropertyChanged = string.Empty;\n\n            var facade = new FacadeModel(new BaseModel());\n\n            var obj = (INotifyPropertyChanged) facade;\n            obj.PropertyChanged += (sender, args) => resultPropertyChanged = args.PropertyName;\n\n            facade.IntProperty = 999;\n\n            Assert.AreEqual(expectedPropertyChanged, resultPropertyChanged);\n        }\n\n        [Test]\n        public void FacadeAnotherStringPropertyChangedEventFiresOnAssignementTest()\n        {\n            var expectedPropertyChanged = \"AnotherStringProperty\";\n            var resultPropertyChanged = string.Empty;\n\n            var facade = new FacadeModel(new BaseModel());\n\n            var obj = (INotifyPropertyChanged) facade;\n            obj.PropertyChanged += (sender, args) => resultPropertyChanged = args.PropertyName;\n\n            facade.AnotherStringProperty = \"Some New Value\";\n\n            Assert.AreEqual(expectedPropertyChanged, resultPropertyChanged);\n        }\n\n        [Test]\n        public void StringPropertyOnWeavedDecoratorReturnsBaseModelDefaultStringValue()\n        {\n            var model = new BaseModel();\n            var expectedResult = model.StringProperty;\n\n            var decorator = new DecoratorModel(model);\n\n            Assert.AreEqual(expectedResult, decorator.StringProperty);\n        }\n\n        [Test]\n        public void DecoratorStringPropertyRaisesPropertyChanged()\n        {\n            var expectedPropertyChanged = \"StringProperty\";\n            var resultPropertyChanged = string.Empty;\n\n            var decorator = new DecoratorModel(new BaseModel());\n\n            var obj = (INotifyPropertyChanged) decorator;\n            obj.PropertyChanged += (sender, args) => resultPropertyChanged = args.PropertyName;\n\n            decorator.StringProperty = \"Some New Value\";\n\n            Assert.AreEqual(expectedPropertyChanged, resultPropertyChanged);\n        }\n    }\n\n    public class BaseModel : ReactiveObject\n    {\n        public virtual int IntProperty { get; set; } = 5;\n        public virtual string StringProperty { get; set; } = \"Initial Value\";\n    }\n\n    public class FacadeModel : ReactiveObject\n    {\n        private BaseModel _dependency;\n\n        public FacadeModel()\n        {\n            _dependency = new BaseModel();\n        }\n\n        public FacadeModel(BaseModel dependency)\n        {\n            _dependency = dependency;\n        }\n\n        public BaseModel Dependency\n        {\n            get { return _dependency; }\n            private set { _dependency = value; }\n        }\n\n        // Property with the same name, will look for a like for like name on the named dependency\n        [ReactiveDependency(nameof(Dependency))]\n        public int IntProperty { get; set; }\n\n        // Property named differently to that on the dependency but still pass through value\n        [ReactiveDependency(nameof(Dependency), TargetProperty = \"StringProperty\")]\n        public string AnotherStringProperty { get; set; }\n    }\n\n    public class DecoratorModel : BaseModel\n    {\n        private readonly BaseModel _model;\n\n        // Testing ctor\n        public DecoratorModel()\n        {\n            _model = new BaseModel();\n        }\n\n        public DecoratorModel(BaseModel baseModel)\n        {\n            _model = baseModel;\n        }\n\n        [Reactive]\n        public string SomeCoolNewProperty { get; set; }\n\n        // Works with private fields\n        [ReactiveDependency(nameof(_model))]\n        public override string StringProperty { get; set; }\n\n        // Can't be attributed as has additional functionality in the decorated get\n        public override int IntProperty\n        {\n            get { return _model.IntProperty * 2; }\n            set\n            {\n                _model.IntProperty = value;\n                this.RaisePropertyChanged();\n            }\n        }\n    }\n}"
  },
  {
    "path": "ReactiveUI.Fody.Tests/ReactiveUI.Fody.Tests.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{A735C110-6877-4C3A-8056-9ABC5FB2DD91}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ReactiveUI.Fody.Tests</RootNamespace>\n    <AssemblyName>ReactiveUI.Fody.Tests</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <NuGetPackageImportStamp>\n    </NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"nunit.framework, Version=3.2.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\NUnit.3.2.0\\lib\\net45\\nunit.framework.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ReactiveUI, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\reactiveui-core.7.0.0\\lib\\Net45\\ReactiveUI.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Splat, Version=1.6.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Splat.1.6.0\\lib\\Net45\\Splat.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Rx-Core.2.2.5\\lib\\net45\\System.Reactive.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reactive.Interfaces, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Rx-Interfaces.2.2.5\\lib\\net45\\System.Reactive.Interfaces.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reactive.Linq, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Rx-Linq.2.2.5\\lib\\net45\\System.Reactive.Linq.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reactive.PlatformServices, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Rx-PlatformServices.2.2.5\\lib\\net45\\System.Reactive.PlatformServices.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reactive.Windows.Threading, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Rx-XAML.2.2.5\\lib\\net45\\System.Reactive.Windows.Threading.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Net.Http\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Issues\\Issue10Tests.cs\" />\n    <Compile Include=\"Issues\\Issue13Tests.cs\" />\n    <Compile Include=\"Issues\\Issue11Tests.cs\" />\n    <Compile Include=\"Issues\\Issue31Tests.cs\" />\n    <Compile Include=\"Issues\\Issue41Tests.cs\" />\n    <Compile Include=\"Issues\\Issue47Tests.cs\" />\n    <Compile Include=\"ObservableAsPropertyTests.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ReactiveDependencyTests.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\">\n      <SubType>Designer</SubType>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"FodyWeavers.xml\">\n      <SubType>Designer</SubType>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\ReactiveUI.Fody.Helpers.Net45\\ReactiveUI.Fody.Helpers.Net45.csproj\">\n      <Project>{1ca52110-be45-4c45-b709-28061077e2a5}</Project>\n      <Name>ReactiveUI.Fody.Helpers.Net45</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <PropertyGroup>\n    <PreBuildEvent>copy $(SolutionDir)ReactiveUI.Fody\\bin\\$(ConfigurationName)\\ReactiveUI.Fody.dll $(SolutionDir)Weavers\\bin\\Weavers.dll\ncopy $(SolutionDir)ReactiveUI.Fody\\bin\\$(ConfigurationName)\\ReactiveUI.Fody.pdb $(SolutionDir)Weavers\\bin\\Weavers.pdb</PreBuildEvent>\n  </PropertyGroup>\n  <Import Project=\"..\\packages\\Fody.2.0.9\\build\\dotnet\\Fody.targets\" Condition=\"Exists('..\\packages\\Fody.2.0.9\\build\\dotnet\\Fody.targets')\" />\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\packages\\Fody.2.0.9\\build\\dotnet\\Fody.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Fody.2.0.9\\build\\dotnet\\Fody.targets'))\" />\n  </Target>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "ReactiveUI.Fody.Tests/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Fody\" version=\"2.0.9\" targetFramework=\"net45\" developmentDependency=\"true\" />\n  <package id=\"NUnit\" version=\"3.2.0\" targetFramework=\"net45\" />\n  <package id=\"reactiveui\" version=\"7.0.0\" targetFramework=\"net45\" />\n  <package id=\"reactiveui-core\" version=\"7.0.0\" targetFramework=\"net45\" />\n  <package id=\"Rx-Core\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Interfaces\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Linq\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Main\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-PlatformServices\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-XAML\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Splat\" version=\"1.6.0\" targetFramework=\"net45\" />\n</packages>"
  },
  {
    "path": "ReactiveUIFody.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.25420.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody\", \"ReactiveUI.Fody\\ReactiveUI.Fody.csproj\", \"{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}\"\nEndProject\nProject(\"{D954291E-2A0B-460D-934E-DC6B0785DB48}\") = \"ReactiveUI.Fody.Helpers\", \"ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.shproj\", \"{4433FF2E-3150-4D7F-BE18-A2258799B79D}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Helpers.Net45\", \"ReactiveUI.Fody.Helpers.Net45\\ReactiveUI.Fody.Helpers.Net45.csproj\", \"{1CA52110-BE45-4C45-B709-28061077E2A5}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Helpers.Pcl\", \"ReactiveUI.Fody.Helpers.Pcl\\ReactiveUI.Fody.Helpers.Pcl.csproj\", \"{8509509A-17C7-4CF0-84AD-5DD208446766}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \".nuget\", \".nuget\", \"{841EF03D-D23E-45CB-8BF5-362F32225C96}\"\n\tProjectSection(SolutionItems) = preProject\n\t\t.nuget\\packages.config = .nuget\\packages.config\n\tEndProjectSection\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Tests\", \"ReactiveUI.Fody.Tests\\ReactiveUI.Fody.Tests.csproj\", \"{A735C110-6877-4C3A-8056-9ABC5FB2DD91}\"\nEndProject\nGlobal\n\tGlobalSection(SharedMSBuildProjectFiles) = preSolution\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{1ca52110-be45-4c45-b709-28061077e2a5}*SharedItemsImports = 4\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{4433ff2e-3150-4d7f-be18-a2258799b79d}*SharedItemsImports = 13\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{8509509a-17c7-4cf0-84ad-5dd208446766}*SharedItemsImports = 4\n\tEndGlobalSection\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "ReactiveUIFody.sln.DotSettings",
    "content": "﻿<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namespace:System;assembly=mscorlib\" xmlns:ss=\"urn:shemas-jetbrains-com:settings-storage-xaml\" xmlns:wpf=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=ExplicitCallerInfoArgument/@EntryIndexedValue\">DO_NOT_SHOW</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=InconsistentNaming/@EntryIndexedValue\">DO_NOT_SHOW</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=ObjectCreationAsStatement/@EntryIndexedValue\">DO_NOT_SHOW</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=PossibleNullReferenceException/@EntryIndexedValue\">DO_NOT_SHOW</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantIfElseBlock/@EntryIndexedValue\">DO_NOT_SHOW</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=ReplaceWithSingleCallToSingle/@EntryIndexedValue\">DO_NOT_SHOW</s:String></wpf:ResourceDictionary>"
  },
  {
    "path": "ReactiveUIFodyAll.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.25420.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody\", \"ReactiveUI.Fody\\ReactiveUI.Fody.csproj\", \"{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}\"\nEndProject\nProject(\"{D954291E-2A0B-460D-934E-DC6B0785DB48}\") = \"ReactiveUI.Fody.Helpers\", \"ReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.shproj\", \"{4433FF2E-3150-4D7F-BE18-A2258799B79D}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Helpers.Net45\", \"ReactiveUI.Fody.Helpers.Net45\\ReactiveUI.Fody.Helpers.Net45.csproj\", \"{1CA52110-BE45-4C45-B709-28061077E2A5}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Helpers.Android\", \"ReactiveUI.Fody.Helpers.Android\\ReactiveUI.Fody.Helpers.Android.csproj\", \"{6D2A6846-A8B7-4186-807D-12E335BD1C67}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Helpers.Ios\", \"ReactiveUI.Fody.Helpers.Ios\\ReactiveUI.Fody.Helpers.Ios.csproj\", \"{377C39ED-0F7E-4522-A41E-96C5BA0C4FCB}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Helpers.Pcl\", \"ReactiveUI.Fody.Helpers.Pcl\\ReactiveUI.Fody.Helpers.Pcl.csproj\", \"{8509509A-17C7-4CF0-84AD-5DD208446766}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \".nuget\", \".nuget\", \"{841EF03D-D23E-45CB-8BF5-362F32225C96}\"\n\tProjectSection(SolutionItems) = preProject\n\t\t.nuget\\packages.config = .nuget\\packages.config\n\tEndProjectSection\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ReactiveUI.Fody.Tests\", \"ReactiveUI.Fody.Tests\\ReactiveUI.Fody.Tests.csproj\", \"{A735C110-6877-4C3A-8056-9ABC5FB2DD91}\"\n\tProjectSection(ProjectDependencies) = postProject\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989} = {CCACB6C3-4C59-4372-85D1-CDDCE0D26989}\n\tEndProjectSection\nEndProject\nGlobal\n\tGlobalSection(SharedMSBuildProjectFiles) = preSolution\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{1ca52110-be45-4c45-b709-28061077e2a5}*SharedItemsImports = 4\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{377c39ed-0f7e-4522-a41e-96c5ba0c4fcb}*SharedItemsImports = 4\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{8509509a-17c7-4cf0-84ad-5dd208446766}*SharedItemsImports = 4\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{4433ff2e-3150-4d7f-be18-a2258799b79d}*SharedItemsImports = 13\n\t\tReactiveUI.Fody.Helpers\\ReactiveUI.Fody.Helpers.projitems*{6d2a6846-a8b7-4186-807d-12e335bd1c67}*SharedItemsImports = 4\n\tEndGlobalSection\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{CCACB6C3-4C59-4372-85D1-CDDCE0D26989}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{1CA52110-BE45-4C45-B709-28061077E2A5}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{6D2A6846-A8B7-4186-807D-12E335BD1C67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{6D2A6846-A8B7-4186-807D-12E335BD1C67}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{6D2A6846-A8B7-4186-807D-12E335BD1C67}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{6D2A6846-A8B7-4186-807D-12E335BD1C67}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{377C39ED-0F7E-4522-A41E-96C5BA0C4FCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{377C39ED-0F7E-4522-A41E-96C5BA0C4FCB}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{377C39ED-0F7E-4522-A41E-96C5BA0C4FCB}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{377C39ED-0F7E-4522-A41E-96C5BA0C4FCB}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{8509509A-17C7-4CF0-84AD-5DD208446766}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{A735C110-6877-4C3A-8056-9ABC5FB2DD91}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Readme.md",
    "content": "# ReactiveUI.Fody\n\n[![Windows Build Status]](https://ci.appveyor.com/project/KirkWoll/reactiveui-fody)\n\nC# Fody extension to generate RaisePropertyChange notifications for properties and ObservableAsPropertyHelper properties.\n\n## Install ##\nNuget package ReactiveUI.Fody:\n\n> Install-Package ReactiveUI.Fody\n\nCurrently, you need to manually add `<ReactiveUI />` to your Fody weavers configuration. If this is your first Fody plugin then `FodyWeavers.xml` should look like this after the change:\n\n    <?xml version=\"1.0\" encoding=\"utf-8\" ?>\n    <Weavers>\n        <ReactiveUI />\n    </Weavers>\n\n##Reactive Properties##\n\nEases the need for boilerplate in your view models when using [reactiveui](https://github.com/reactiveui/ReactiveUI).  Typically, in your view models you must declare properties like this:\n\n    string _SearchId;\n    \n    public string SearchId \n    {\n        get { return _SearchId; }\n        set { this.RaiseAndSetIfChanged(ref _SearchId, value); }\n    }\n\nThis is tedious since all you'd like to do is declare properties as normal:\n\n    [Reactive]public string SearchId { get; set; }\n    \nIf a property is annotated with the `[Reactive]` attribute, the plugin will weave the boilerplate into your \noutput based on the simple auto-property declaration you provide.  \n\n##ObservableAsPropertyHelper Properties\n\nSimilarly, in order to handle observable property helper properties, you must declare them like this:\n\n    ObservableAsPropertyHelper<string> _PersonInfo;\n    \n    public string PersonInfo \n    {\n        get { return _PersonInfo.Value; }\n    }\n\nThen elsewhere you'd set it up via:\n\n    ...\n    .ToProperty(this, x => x.PersonInfo, out _PersonInfo);\n\nThis plugin will instead allow you to declare the property like:\n\n    public extern string PersonInfo { [ObservableAsProperty]get; }\n    \nIt will generate the field and implement the property for you.  Because there is no field for you to pass to\n`.ToProperty`, you should use the `.ToPropertyEx` extension method provided by this library:\n\n    ...\n    .ToPropertyEx(this, x => x.PersonInfo);\n    \nThis extension will assign the auto-generated field for you rather than relying on the `out` parameter.\n\n[Windows Build Status]: https://ci.appveyor.com/api/projects/status/github/kswoll/ReactiveUI.Fody?svg=true\n"
  },
  {
    "path": "Weavers/bin/_._",
    "content": ""
  },
  {
    "path": "makepackage.bat",
    "content": "REM \"C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe\" ReactiveUIFody.sln\n\ncd Nuget\n\n..\\packages\\NugetUtilities.1.0.5\\UpdateVersion.exe ReactiveUIFody.nuspec -Increment\n\nmkdir build\ncd build\n\ncopy ..\\Nuget.exe .\ncopy ..\\ReactiveUIFody.nuspec .\n\nmkdir lib\nmkdir lib\\net45\nmkdir lib\\Xamarin.iOS10\nmkdir lib\\MonoAndroid\nmkdir \"lib\\portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\"\n\ncopy ..\\..\\ReactiveUI.Fody\\bin\\Debug\\ReactiveUI.Fody.* .\nREM copy ..\\..\\ReactiveUI.Fody.Helpers.Ios\\bin\\iPhone\\Debug\\ReactiveUI.Fody.Helpers.* lib\\Xamarin.iOS10\ncopy ..\\..\\ReactiveUI.Fody.1.0.26\\lib\\Xamarin.iOS10\\ReactiveUI.Fody.Helpers.* lib\\Xamarin.iOS10\ncopy ..\\..\\ReactiveUI.Fody.Helpers.Net45\\bin\\Debug\\ReactiveUI.Fody.Helpers.* lib\\net45\ncopy ..\\..\\ReactiveUI.Fody.Helpers.Pcl\\bin\\Debug\\ReactiveUI.Fody.Helpers.* \"lib\\portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\"\nREM copy ..\\..\\ReactiveUI.Fody.Helpers.Android\\bin\\Debug\\ReactiveUI.Fody.Helpers.* lib\\MonoAndroid\ncopy ..\\..\\ReactiveUI.Fody.1.0.26\\lib\\MonoAndroid\\ReactiveUI.Fody.Helpers.* lib\\MonoAndroid\n\n\nnuget pack ReactiveUIFody.nuspec\n\ncopy *.nupkg ..\n\ncd ..\nrmdir build /S /Q\ncd .."
  }
]