Jimple does not support associating static final fields with constants. If we find a constant value in the constant table of the DEX or CLASS file, we instead associate a tag with the respective field. This however has the drawback of not surviving DEX -> JIMPLE -> DEX as the Jimple text file format has no way of storing tags. As a workaround, we now synthesize static initializers in <clinit> which assign these constants to the fields when reading in files. When reading the Jimple files back in, we synthesize tags from such assignments.
Merge branch 'develop' of git@github.com:Sable/soot.git into develop
fixing which types are allowed in final code
Fixed a bug in the type assigner that left impossible (i.e. conflicting) typings in the list of possible typings and only added the supertypes instead of replacing the conflicting typings with them. I also improved performance and memory consumption.
code cleanup
cleaned up the code, modernized some iterators, added some generics, fixed a bug that caused an exception when printing an empty method body
added an unsafe method for retrieving methods from classes
only add a new static initializer if we actually have code for it
added a missing "else"
Added constant string propagation to ConstantPropagatorAndFolder
Merge pull request #254 from Sable/jspaeth

Added constant string propagation to ConstantPropagatorAndFolder
improved performance using a new unsafe getter
Merge branch 'develop' of github.com:Sable/soot into develop
performance improvements through unsafe method/field getters
Fix Issue #255
Merge pull request #256 from torunRuwor/develop

Fix Issue #255
Merge branch 'develop' of git@github.com:Sable/soot.git into develop
Fixes a bug regarding commit 2a6ddca3adb80fc1b026ae116e584b2b5fa7a9f1.
Now, dalvik constants get initializers in clinit. However, soot could
generate code like

public void <clinit>() {
  <a.a: int a> = 2;
  return;
  <a.a: int b> = 2;  //This line is created by
ConstantValueToInitializerTransformer
  return;  //This line is created by
ConstantValueToInitializerTransformer
}

After this fix:

public void <clinit>() {
  <a.a: int b> = 2;  //This line is created by
ConstantValueToInitializerTransformer
  <a.a: int a> = 2;
  return;
}