And it compiles.
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 83bafb3..63b8707 100644
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -58,7 +58,7 @@
 		lastChild = addThis;

 

 		addThis->parent = this;

-		addThis->next = null;

+		addThis->next = 0;

 	}

 	else {

 		TIXMLASSERT( firstChild == 0 );

@@ -66,7 +66,16 @@
 

 		addThis->parent = this;

 		addThis->prev = 0;

-		addThis->next = null;

+		addThis->next = 0;

+	}

+	return addThis;

+}

+

+

+void XMLNode::Print( FILE* fp, int depth )

+{

+	for( int i=0; i<depth; ++i ) {

+		fprintf( fp, "    " );

 	}

 }

 

@@ -77,7 +86,7 @@
 

 	char* start = SkipWhiteSpace( p );

 	if ( !start )

-		return;

+		return 0;

 

 	char endChar = *endTag;

 	p = start;

@@ -104,13 +113,20 @@
 }

 

 

-virtual XMLComment::~XMLComment()

+XMLComment::~XMLComment()

 {

 

 }

 

 

-virtual char* XMLComment::ParseDeep( char* p )

+void XMLComment::Print( FILE* fp, int depth )

+{

+	XMLNode::Print( fp, depth );

+	fprintf( fp, "<!-- %s -->\n", value );

+}

+

+

+char* XMLComment::ParseDeep( char* p )

 {

 	// Comment parses as text.

 	value = ParseText( p, "-->", &p );

@@ -135,21 +151,22 @@
 

 bool XMLDocument::Parse( const char* p )

 {

-	charBuffer = CharBuffer.Construct( p );

+	charBuffer = CharBuffer::Construct( p );

 	XMLNode* node = 0;

-	Identify( charBuffer., node );

-	node->Parse( p );

+	char* q = Identify( charBuffer->mem, &node );

+	node->ParseDeep( q );

+	return true;

 }

 

 

-XMLComment* XMLDocument::newComment( XMLNode* parent )

+void XMLDocument::Print( FILE* fp, int depth ) 

 {

-	

+	for( XMLNode* node = root->firstChild; node; node=node->next ) {

+		node->Print( fp, depth );

+	}

 }

 

 

-

-

 char* XMLDocument::Identify( char* p, XMLNode** node ) 

 {

 	XMLNode* returnNode = 0;

@@ -173,7 +190,7 @@
 	const char* cdataHeader = { "<![CDATA[" };

 

 	if ( XMLNode::StringEqual( p, xmlHeader, 5 ) ) {

-		returnNode = new XMLComment();

+		returnNode = new XMLComment( this );

 	}

 	else {

 		TIXMLASSERT( 0 );