Buggy code:
info . add ( value . toString ( ) ) ; } else { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , typeName , "undef" , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( "?" ) ; } } else if ( ( obj . elemType . kind ) == ( Struct . FLOAT ) ) { typeName = "float" ; value = Memory . loadFloat ( ( ( address + offset ) + ( size * i ) ) ) ; if ( Memory . getMemoryInformation ( ( ( address + offset ) + ( size * i ) ) ) . isInitialized ) { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , typeName , ( "" + value ) , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( value . toString ( ) ) ; } else { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , typeName , "undef" , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( "?" ) ; } } else if ( ( obj . elemType . kind ) == ( Struct . BOOL ) ) { typeName = "bool" ; value = Memory . loadBool ( ( ( address + offset ) + ( size * i ) ) ) ; if ( Memory . getMemoryInformation ( ( ( address + offset ) + ( size * i ) ) ) . isInitialized ) { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , typeName , ( "" + value ) , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( value . toString ( ) ) ; } else { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , typeName , "undef" , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( "?" ) ; } } else if ( ( obj . elemType . kind ) == ( Struct . INT ) ) { typeName = "int" ; value = Memory . loadInt ( ( ( address + offset ) + ( size * i ) ) ) ; if ( Memory . getMemoryInformation ( ( ( address + offset ) + ( size * i ) ) ) . isInitialized ) { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , typeName , ( "" + value ) , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( value . toString ( ) ) ; } else { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , typeName , "undef" , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( "?" ) ; } } else if ( ( obj . elemType . kind ) == ( Struct . STRUCT ) ) { VarDataNode n = InitTreeTableData . readVariables ( init , obj . fields , new VarDataNode ( name , "struct" , "" , new ArrayList < at . jku . ssw . cmm . gui . treetable . DataNode > ( ) , ( - 1 ) , ( - 1 ) ) , ( ( address + offset ) + ( size * i ) ) , main , 0 ) ; node . add ( init , n ) ; } else if ( ( obj . elemType . kind ) == ( Struct . STRING ) ) { JButton b = new JButton ( Strings . get ( Memory . loadStringAddress ( ( ( address + offset ) + ( size * i ) ) ) ) ) ; MouseListener l = new at . jku . ssw . cmm . gui . event . debug . StringPopupListener ( main , Strings . get ( Memory . loadStringAddress ( ( ( address + offset ) + ( size * i ) ) ) ) ) ; b . addMouseListener ( l ) ; if ( Memory . getMemoryInformation ( ( ( address + offset ) + ( size * i ) ) ) . isInitialized ) { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , "string" , b , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; <START_BUG> info . add ( value ) ; <END_BUG> } else { node . add ( init , new VarDataNode ( ( ( "[" + i ) + "]" ) , "string" , "undef" , null , ( ( address + offset ) + ( size * i ) ) , ( - 1 ) ) ) ; info . add ( "?" ) ; } } } } return node ; } public static VarDataNode createDataStructure ( String fileName ) { } public static Obj findNodeByName ( Obj start , String name ) { } }

Fix:
info . add ( Strings . get ( Memory . loadStringAddress ( ( ( address + offset ) + ( size * i ) ) ) ) ) ;