Currently, most asefile structs hide their fields and expose immutable access methods. To support use cases around testing and actually manipulating Aseprite files from code, we'll need to allow some level of public-facing constructor and/or mutation support.
Can you provide an example of what those kinds of manipulations might entail? I find it difficult to design a good API without a good understanding of the use cases.
Currently, most asefile structs hide their fields and expose immutable access methods. To support use cases around testing and actually manipulating Aseprite files from code, we'll need to allow some level of public-facing constructor and/or mutation support.