@@ -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