ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Impl/Tree/FSharpCachedDeclarationBase.cs (25 lines of code) (raw):

using JetBrains.Diagnostics; using JetBrains.ReSharper.Psi; using JetBrains.ReSharper.Psi.ExtensionsAPI.Caches2; namespace JetBrains.ReSharper.Plugins.FSharp.Psi.Impl.Tree { internal abstract class FSharpCachedDeclarationBase : FSharpTypeMemberDeclarationBase, ICachedDeclaration2 { protected override void PreInit() { base.PreInit(); CacheDeclaredElement = null; } public override IDeclaredElement DeclaredElement { get { Assertion.Assert(IsValid(), "Getting declared element from invalid declaration"); Assertion.Assert(CacheDeclaredElement == null || CacheDeclaredElement.IsValid(), "myCacheDeclaredElement == null || myCacheDeclaredElement.IsValid()"); return CacheDeclaredElement; } } public IDeclaredElement CacheDeclaredElement { get; set; } } }