@ CheckReturnValue private FlowScope maybeRestrictName ( FlowScope blindScope , Node node , JSType originalType , JSType restrictedType ) { if ( restrictedType != null && restrictedType != originalType ) { return declareNameInScope ( blindScope , node , restrictedType ) ; } return blindScope ; }
If the restrictedType differs from the originalType then we should branch the current flow scope and create a new flow scope with the name declared with the new type .