Predicting Variable Types in Dynamically Typed Programming Languages