returnw// analyze variable declarations of the form id := expr
}
returnnil// skip assigns of the form id = expr (not an id declaration)
case*ast.CallExpr,// skip call expressions (not an id declaration)
*ast.ImportSpec,// skip import section subtree because we already have the list of imports
*ast.KeyValueExpr,// skip analysis of key-val expressions ({key:value}): ids of such expressions, even the same of an import name, do not shadow the import name
*ast.ReturnStmt,// skip skipping analysis of returns, ids in expression were already analyzed
*ast.SelectorExpr,// skip analysis of selector expressions (anId.otherId): because if anId shadows an import name, it was already detected, and otherId does not shadows the import name
*ast.StructType:// skip analysis of struct type because struct fields can not shadow an import name