“…Arbitrary typestate analysis requires a precise alias analysis for soundness; because wholeprogram alias analyses with sufficient precision scale poorly-taking on the order of hours for practical programs [289], despite significant research investment in the problem-typestate analysis is usually considered impractical. To see why aliasing information is necessary, consider a file object of type OpenedFile with two aliases: f and g. If f.close() is called, the type of f changes to ClosedFile.…”