Rewrite the darwin tlv support to use a chain and return to copying