Data. To test our hypothesis, we used a curated, deduplicated set of Java source-code files [1]}.
For each class and each method, we used the remainder of the class as evidence or context, and the method body was used to produce training or test data.
We used 1.57 M method bodies for training. The grammar used had ten terminals corresponding to formal parameters, ten for class variables, and ten for methods local to the class. None of the Java classes in the corpus needed more than ten of each of these terminals; when generating training data, each declared Java variable or method was randomly mapped to one of the appropriate terminals. Approximately 8,000 types and 27,000 method calls from the Java JDK also appeared as terminals in the grammar.
