private void putNulls(Map<String,Object> values,Set<String> valuesAddedinThisFrame){
  if (attributes != null) {
    for (    Node n : attributes) {
      if (n.multiValued) {
        putANull(n.fieldName,values,valuesAddedinThisFrame);
      }
    }
  }
  if (hasText && multiValued) {
    putANull(fieldName,values,valuesAddedinThisFrame);
  }
  if (childNodes != null) {
    for (    Node childNode : childNodes) {
      childNode.putNulls(values,valuesAddedinThisFrame);
    }
  }
}

private void putNulls ( Map < String , Object > values , Set < String > valuesAddedinThisFrame ) { if ( attributes != null ) { for ( Node n : attributes ) { if ( n . multiValued ) { putANull ( n . fieldName , values , valuesAddedinThisFrame ) ; } } } if ( hasText && multiValued ) { putANull ( fieldName , values , valuesAddedinThisFrame ) ; } if ( childNodes != null ) { for ( Node childNode : childNodes ) { childNode . putNulls ( values , valuesAddedinThisFrame ) ; } } }
a recursive routine that walks the node tree from a supplied start pushing a null string onto every multivalued fieldname ' s list of values where a value has not been provided from the stream .
