Your code is in conflict with the std. PO code. This is how std. PO behaves even at runtime.
Try doing this if not already implemented.
Instead of assigning TaskID before creation of AccountingCodingBlock, assign it after the creation by accessing it again by clearing the value in TaskID alone and then assign it with your "Values" structure.