#28 throw MaxDepthExceededException when max depth exceeded, not IllegalArgumentException