protected virtual TsTypeMember?Rewrite(CsTypeMember csTypeMember) { switch (csTypeMember) { case CsProperty csProperty: var forceNullable = csProperty.Attributes.Any(a => a.Name.Contains("CanBeNull")) || csProperty.IsNullable; return(new TsPropertySignature { Name = csProperty.Name, Type = TsType.From(csProperty.Type, forceNullable) }); case CsField csField: if (csField.Value == null) { return(null); } return(new TsPropertySignature { Name = csField.Name, Type = TsType.FromLiteral(csField.Value) }); default: throw new ArgumentOutOfRangeException(nameof(csTypeMember), csTypeMember.GetType().Name, null); } }