private static VBSyntax.MethodBaseSyntax GetMethodBlock(VBSyntax.MethodBlockBaseSyntax node)
 {
     return(node.IsKind(VBasic.SyntaxKind.GetAccessorBlock) ? node.GetAncestor <VBSyntax.PropertyBlockSyntax>().PropertyStatement : node.BlockStatement);
 }
 /// <summary>
 /// Use in conjunction with <see cref="IMethodSymbolExtensions.ReturnsVoidOrAsyncTask(IMethodSymbol)" />
 /// </summary>
 public static bool MustReturn(this VBSyntax.MethodBlockBaseSyntax node)
 {
     return(!IsIterator(node) && node.IsKind(VBasic.SyntaxKind.FunctionBlock, VBasic.SyntaxKind.GetAccessorBlock) &&
            !node.IsIterator());
 }
 public static bool IsIterator(this VBSyntax.MethodBlockBaseSyntax node)
 {
     return(GetMethodBlock(node).HasModifier(VBasic.SyntaxKind.IteratorKeyword));
 }