private List<String> valuesToString(List<ASTNode> children) 
    {
        if (children == null || children.isEmpty() ) {
            throw new IllegalArgumentException("children must not be NULL/empty");
        }
        final List<String> values=new ArrayList<>();
        for ( ASTNode child : children ) 
        {
            TermNode reduced = ((TermNode) child).reduce();
            if ( reduced instanceof StringLiteralNode) 
            {
                final StringLiteralNode str = (StringLiteralNode) reduced;
                final String escapedValue = StringLiteralNode.escapeQuotes( str.getValue() );
                if ( str.isSingleCharacter() ) 
                {
                    if ( str.getValue().length() == 0 ) {
                        values.add( "0" ); // just write a zero byte
                    } else {
                        values.add( "'"+escapedValue+"'" );
                    }
                } 
                else 
                {
                    values.add( "\""+escapedValue+"\"" );
                    values.add( "0" );
                }
            } else if ( reduced instanceof NumberLiteralNode ) {
                values.add( Long.toString( ((NumberLiteralNode) reduced).getValue() ) );
            } else {
                values.add( expressionPrinter.print( reduced ) );
            }
        } 
        return values;
    }