private bool TryAddProperty(FunctionDefinition node, PythonType declaringType) { // We can't add a property to an unknown type. Fallback to a regular function for now. // TOOD: Decouple declaring types from the property. if (declaringType.IsUnknown()) { return(false); } var dec = node.Decorators?.Decorators; var decorators = dec != null?dec.ExcludeDefault().ToArray() : Array.Empty <Expression>(); foreach (var d in decorators.OfType <NameExpression>()) { switch (d.Name) { case @"property": AddProperty(node, declaringType, false); return(true); case @"abstractproperty": AddProperty(node, declaringType, true); return(true); } } return(false); }