public void printBibtex(PrintWriter writer) {
//	    System.err.println("DEBUG: first="+getFirst());
//	    System.err.println("DEBUG: last="+getLast());
//	    System.err.println("DEBUG: lineage="+getLineage());
//	    System.err.println("DEBUG: prelast="+getPreLast());
//	    System.err.println("DEBUG: isothers="+isOthers());
	    
	    
		if (this.isOthers) {
			writer.print("others");
		} else {
			if (this.preLast != null) {
				writer.print(this.preLast);
				writer.print(' ');
			}
			if(this.last!=null) writer.print(this.last);
			if(this.lineage!=null || this.first!=null) writer.print(", ");
			if (this.lineage != null) {
				writer.print(this.lineage);
				writer.print(", ");
			}
			if (this.first != null) {
				writer.print(this.first);
			} else if(this.lineage !=null){
			    //this.lineage!=null && this.first==null
			    
			    //We have to print something here - otherwise the lineage would
			    //get parsed as the first name by bibtex.
			    writer.print("{}"); 
			}
		}
	}