@@ -3207,9 +3207,7 @@ private void appendDecoderDisplay(
32073207 if  (fieldToken .signal () == Signal .BEGIN_FIELD )
32083208 {
32093209 final  Token  encodingToken  = fields .get (i  + 1 );
3210- 
32113210 final  String  fieldName  = formatPropertyName (fieldToken .name ());
3212-  append (sb , indent , "//"  + fieldToken );
32133211 lengthBeforeLastGeneratedSeparator  = writeTokenDisplay (fieldName , encodingToken , sb , indent );
32143212
32153213 i  += fieldToken .componentTokenCount ();
@@ -3228,8 +3226,6 @@ private void appendDecoderDisplay(
32283226 throw  new  IllegalStateException ("tokens must begin with BEGIN_GROUP: token="  + groupToken );
32293227 }
32303228
3231-  append (sb , indent , "//"  + groupToken );
3232- 
32333229 final  String  groupName  = formatPropertyName (groupToken .name ());
32343230 final  String  groupDecoderName  = decoderName (formatClassName (groupToken .name ()));
32353231
@@ -3261,8 +3257,6 @@ private void appendDecoderDisplay(
32613257 throw  new  IllegalStateException ("tokens must begin with BEGIN_VAR_DATA: token="  + varDataToken );
32623258 }
32633259
3264-  append (sb , indent , "//"  + varDataToken );
3265- 
32663260 final  String  characterEncoding  = varData .get (i  + 3 ).encoding ().characterEncoding ();
32673261 final  String  varDataName  = formatPropertyName (varDataToken .name ());
32683262 append (sb , indent , "builder.append(\" "  + varDataName  + Separators .KEY_VALUE  + "\" );" );
@@ -3293,8 +3287,6 @@ private void appendDecoderDisplay(
32933287 private  int  writeTokenDisplay (
32943288 final  String  fieldName , final  Token  typeToken , final  StringBuilder  sb , final  String  indent )
32953289 {
3296-  append (sb , indent , "//"  + typeToken );
3297- 
32983290 if  (typeToken .encodedLength () <= 0  || typeToken .isConstantEncoding ())
32993291 {
33003292 return  -1 ;
@@ -3343,8 +3335,19 @@ private int writeTokenDisplay(
33433335 break ;
33443336
33453337 case  BEGIN_COMPOSITE :
3346-  append (sb , indent , fieldName  + "().appendTo(builder);" );
3338+  {
3339+  final  String  typeName  = formatClassName (decoderName (typeToken .applicableTypeName ()));
3340+  append (sb , indent , "final "  + typeName  + " "  + fieldName  + " = "  + fieldName  + "();" );
3341+  append (sb , indent , "if ("  + fieldName  + " != null)" );
3342+  append (sb , indent , "{" );
3343+  append (sb , indent , " "  + fieldName  + ".appendTo(builder);" );
3344+  append (sb , indent , "}" );
3345+  append (sb , indent , "else" );
3346+  append (sb , indent , "{" );
3347+  append (sb , indent , " builder.append(\" null\" );" );
3348+  append (sb , indent , "}" );
33473349 break ;
3350+  }
33483351 }
33493352
33503353 final  int  lengthBeforeFieldSeparator  = sb .length ();
0 commit comments