refactored flow sensitive typing to include dereferencing operator