▁( if ▁not ▁impossible ) ▁for ▁a ▁static ▁analy zer ▁to ▁determine ▁that ▁the ▁else ▁branch ▁will ▁not ▁be ▁taken . ▁Con vers ely , ▁a ▁static ▁type ▁check er ▁will ▁quickly ▁detect ▁type ▁errors ▁in ▁rarely ▁used ▁code ▁paths . ▁Without ▁static ▁type ▁checking , ▁even ▁code ▁coverage ▁tests ▁with ▁ 1 0 0 % ▁coverage ▁may ▁be ▁unable ▁to ▁find ▁such ▁type ▁errors . ▁The ▁tests ▁may ▁fail ▁to ▁detect ▁such ▁type ▁errors , ▁because ▁the ▁combination ▁of ▁all ▁places ▁where ▁values ▁are ▁created ▁and ▁all ▁places ▁where ▁a ▁certain ▁value ▁is ▁used ▁must ▁be ▁taken ▁into ▁account . ▁ ▁A ▁number ▁of ▁useful ▁and ▁common ▁programming ▁language ▁features ▁cannot ▁be ▁checked ▁stat ically , ▁such ▁as ▁down cast ing . ▁Thus , ▁many ▁languages ▁will ▁have ▁both ▁static ▁and ▁dynamic ▁type ▁checking ; ▁the ▁static ▁type ▁check er ▁ver ifies ▁what ▁it ▁can , ▁and ▁dynamic ▁checks ▁verify ▁the ▁rest . ▁ ▁Many ▁languages ▁with ▁static ▁type ▁checking ▁provide ▁a ▁way ▁to ▁by pass ▁the ▁type ▁check er . ▁Some ▁languages ▁allow ▁program mers ▁to ▁choose ▁between ▁static ▁and ▁dynamic ▁type ▁safety . ▁For ▁example , ▁C # ▁distingu ishes ▁between ▁stat ically - ty ped ▁and ▁dynamically - ty ped ▁variables . ▁Us es ▁of ▁the ▁former ▁are ▁checked ▁stat ically , ▁whereas ▁uses ▁of ▁the ▁latter ▁are ▁checked ▁dynamically . ▁Other ▁languages ▁allow ▁writing ▁code ▁that ▁is ▁not ▁type - safe ; ▁for ▁example , ▁in ▁C , ▁program mers ▁can ▁freely ▁cast ▁a ▁value ▁between ▁any ▁two