// Path: src/bibtex/dom/BibtexString.java
// public class BibtexString extends BibtexAbstractValue {
// 
// 	//	content does not include the quotes or curly braces around the string!
// 	private String content;
// 
// 	/**
// 	 * content includes the quotes or curly braces around the string!
// 	 * 
// 	 * @param content
// 	 */
// 	BibtexString(BibtexFile file, String content) {
// 		super(file);
// 		this.content = content;
// 	}
// 
// 	/**
// 	 * content includes the quotes or curly braces around the string!
// 	 * 
// 	 * @return String
// 	 */
// 	public String getContent() {
// 		return content;
// 	}
// 
// 	/**
// 	 * Sets the content.
// 	 * @param content The content to set
// 	 */
// 	public void setContent(String content) {
// 	    
// 	    assert content!=null: "content parameter may not be null.";
// 	    
// 		this.content = content;
// 	}
// 
// 	/* (non-Javadoc)
// 	 * @see bibtex.dom.BibtexNode#printBibtex(java.io.PrintWriter)
// 	 */
// 	public void printBibtex(PrintWriter writer) {
// 	    
// 	    assert writer!=null: "writer parameter may not be null.";
// 	    
// 		// is this really a number?
// 		try {
// 			Integer.parseInt(content);
// 			writer.print(content);
// 		} catch (NumberFormatException nfe) {
// 			writer.print('{');
// //			for (int begin = 0; begin < content.length();) {
// //				int end = content.indexOf('\n', begin);
// //				if (end < 0) {
// //					if (begin > 0)
// //						writer.print(content.substring(begin, content.length()));
// //					else
// //						writer.print(content);
// //
// //					break;
// //				}
// //				writer.println(content.substring(begin, end));
// //				writer.print("\t\t");
// //				begin = end + 1;
// //			}
// 			writer.print(content);
// 			writer.print('}');
// 		}
// 	}
// 
// }


import java.util.LinkedList;
import java.util.List;
import bibtex.dom.*;
import bibtex.dom.BibtexString;
            }
        }
        String[] result = new String[tokens.size()];
        tokens.toArray(result);
        return result;
    }

    private static boolean isEqual(String str1, String str2) {
        if (str1 == null)
            return str2 == null;
        return str1.equals(str2);
    }

    private static boolean isEqual(BibtexPersonListParserTests.Test test, BibtexPerson person) {
        return isEqual(test.getFirst(), person.getFirst()) && isEqual(test.getLast(), person.getLast())
                && isEqual(test.getLineage(), person.getLineage()) && isEqual(test.getPreLast(), person.getPreLast());
    }

    private static void dumpCompare(BibtexPersonListParserTests.Test test, BibtexPerson person) {
        System.out.println("test.first=\"" + test.getFirst() + "\" person.first=\"" + person.getFirst() + "\"");
        System.out.println("test.last=\"" + test.getLast() + "\" person.last=\"" + person.getLast() + "\"");
        System.out.println("test.preLast=\"" + test.getPreLast() + "\" person.preLast=\"" + person.getPreLast() + "\"");
        System.out.println("test.lineage=\"" + test.getLineage() + "\" person.lineage=\"" + person.getLineage() + "\"");
    }

    public static void main(String args[]) {
        BibtexPersonListParserTests.Test [] tests = BibtexPersonListParserTests.tests;
        for (int i = 0; i < tests.length; i++) {
            BibtexFile file = new BibtexFile();
            
// Path: src/bibtex/dom/BibtexString.java
// public class BibtexString extends BibtexAbstractValue {
// 
// 	//	content does not include the quotes or curly braces around the string!
// 	private String content;
// 
// 	/**
// 	 * content includes the quotes or curly braces around the string!
// 	 * 
// 	 * @param content
// 	 */
// 	BibtexString(BibtexFile file, String content) {
// 		super(file);
// 		this.content = content;
// 	}
// 
// 	/**
// 	 * content includes the quotes or curly braces around the string!
// 	 * 
// 	 * @return String
// 	 */
// 	public String getContent() {
// 		return content;
// 	}
// 
// 	/**
// 	 * Sets the content.
// 	 * @param content The content to set
// 	 */
// 	public void setContent(String content) {
// 	    
// 	    assert content!=null: "content parameter may not be null.";
// 	    
// 		this.content = content;
// 	}
// 
// 	/* (non-Javadoc)
// 	 * @see bibtex.dom.BibtexNode#printBibtex(java.io.PrintWriter)
// 	 */
// 	public void printBibtex(PrintWriter writer) {
// 	    
// 	    assert writer!=null: "writer parameter may not be null.";
// 	    
// 		// is this really a number?
// 		try {
// 			Integer.parseInt(content);
// 			writer.print(content);
// 		} catch (NumberFormatException nfe) {
// 			writer.print('{');
// //			for (int begin = 0; begin < content.length();) {
// //				int end = content.indexOf('\n', begin);
// //				if (end < 0) {
// //					if (begin > 0)
// //						writer.print(content.substring(begin, content.length()));
// //					else
// //						writer.print(content);
// //
// //					break;
// //				}
// //				writer.println(content.substring(begin, end));
// //				writer.print("\t\t");
// //				begin = end + 1;
// //			}
// 			writer.print(content);
// 			writer.print('}');
// 		}
// 	}
// 
// }


// Path: src/bibtex/expansions/BibtexPersonListParser.java
import java.util.LinkedList;
import java.util.List;
import bibtex.dom.*;
import bibtex.dom.BibtexString;

            }
        }
        String[] result = new String[tokens.size()];
        tokens.toArray(result);
        return result;
    }

    private static boolean isEqual(String str1, String str2) {
        if (str1 == null)
            return str2 == null;
        return str1.equals(str2);
    }

    private static boolean isEqual(BibtexPersonListParserTests.Test test, BibtexPerson person) {
        return isEqual(test.getFirst(), person.getFirst()) && isEqual(test.getLast(), person.getLast())
                && isEqual(test.getLineage(), person.getLineage()) && isEqual(test.getPreLast(), person.getPreLast());
    }

    private static void dumpCompare(BibtexPersonListParserTests.Test test, BibtexPerson person) {
        System.out.println("test.first=\"" + test.getFirst() + "\" person.first=\"" + person.getFirst() + "\"");
        System.out.println("test.last=\"" + test.getLast() + "\" person.last=\"" + person.getLast() + "\"");
        System.out.println("test.preLast=\"" + test.getPreLast() + "\" person.preLast=\"" + person.getPreLast() + "\"");
        System.out.println("test.lineage=\"" + test.getLineage() + "\" person.lineage=\"" + person.getLineage() + "\"");
    }

    public static void main(String args[]) {
        BibtexPersonListParserTests.Test [] tests = BibtexPersonListParserTests.tests;
        for (int i = 0; i < tests.length; i++) {
            BibtexFile file = new BibtexFile();
            
            BibtexString string = file.makeString(tests[i].getString());