Add missing public documentation, cleanup and add some Debug.Assert's