In particular, I have not coded but these are some additional resources (1-a and 1-b may attract your attention more I think, from http://www-udc.ig.utexas.edu/external/becker/)
It may be useful to note that the MATLAB native (stiff) solver ode23tb implements the second order TR-BDF2 method, which is increasingly acknowledged to be superior to Crank-Nicolson for many applications, while having a similar level of complexity and computational cost. The method is fully described in
Hosea, M. E., and L. F. Shampine. "Analysis and implementation of TR-BDF2." Applied Numerical Mathematics 20.1-2 (1996): 21-37.