TODOs: - Ensure validation checks are solid - Add tests of validation logic - Optimize Buffer classes? - Make "Clone" method public? - Add compile-time asserts to verify object packing and padding. - Investigate making arrays of objects not be arrays of pointers.