protected override void Write(PropertyDefinition property)
		{
			if (property.ShouldStaySplit() && !MethodContextsMissing)
			{
				WriteSplitProperty(property);
				return;
			}

            if (this.TypeContext.AutoImplementedProperties.Contains(property) &&
                TypeContext.AssignmentData.ContainsKey(property.FullName) &&
                TypeContext.AssignmentData[property.FullName] != null)
            {
                WriteInitializedAutoProperty(property, TypeContext.AssignmentData[property.FullName].AssignmentExpression);
                return;
            }

			WritePropertyDeclaration(property);

			int startFoldingOffset = this.formatter.CurrentPosition;

			this.formatter.WriteStartBlock();

			WriteLine();

			WriteBlock(() =>
			{
				WritePropertyMethods(property);
				WriteLine();
			}
					   , "");

			if (KeyWordWriter.Property != null)
			{
				WriteSpecialEndBlock(KeyWordWriter.Property);
			}
			this.currentWritingInfo.MemberDefinitionToFoldingPositionMap[property] = new OffsetSpan(startFoldingOffset, formatter.CurrentPosition - 1);

			this.formatter.WriteEndBlock();
		}