Hola Carl,
Te recomiendo que utilices TDD para crear esta clase.
La idea es crear pequeños tests (hay quien les gusta llamarles ejemplos) de cada situación o escenario distinto y que pruebes que
Te recomiendo el libro de Carlos Blé. Es gratuito y está muy bien. Se lee muy rápido.
http://www.carlosble.com/downloads/disenoAgilConTdd_ebook.pdf
También te recomendaría evitar If..Then anidados.
Aunque tu método se entiende perfectísimamente, en situaciones un pelín más enrevesadas se lee mejor aplicando el refactoring "Replace Nested Conditional with Guard Clauses":
http://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html
(está sacado de otro libro muy recomendable: el "Refactoring" de Martin Fowler.
Hay una cita muy buena de Kent Beck (creo) que dice que el código se escribe una vez pero se lee muchas. Es por eso que a veces, aunque parezcan cambios menores, merece la pena hacerlos para mejorar la legibilidad del código.
Cualquier cosilla que tengas, silba que por aquí estaremos...
Un saludo,
JC