1 Abandoned branches: should alternative type candidates be proposed by abandoned usage?
2 (This involves using both _attrnames and _attrnames_abandoned on user nodes to decide on whether guards are appropriate.)
3
4 Usage should not be instantly fed back to users.
5 Branches should have an empty set of users and usage should only feed back to users defined on a branch or merged from sub-branches.
6
7 Attribute users should be merged so that many users can be maintained for a name:
8
9 def f(x):
10 if ...:
11 x = ...
12 x.a() # affects assignment node
13 x.b() # affects assignment and parameter nodes
14
15 Constant attribute users need not maintain usage since they are already resolved.
16
17 Consider handling CallFunc in micropython.inspect in order to produce instances of specific classes.
18 Then, consider adding support for guard removal/verification where known instances are involved.
19 Consider handling branches of values within namespaces in order to support more precise value usage.