Using Data Flow Analysis to Infer Type Information in Java Bytecode