In Swift 3.2 and Swift 4, the new exclusive memory access model is a bit too strict when looking at mutating methods of structs. Mutating methods that mutate two different stored properties of self in the same expression are considered to be in error, even though this is a perfectly normal thing to want to do and should be safe.
This complains about the utf8.decode(&iter), as this modifies both the utf8 and iter properties. These are stored properties without property observers, so the accesses to the properties are wholly independent.
This affects the PMJSON library.