private function disassembleCollectionObject(array $collection_details, & $result, $parent = []) {
		foreach ($collection_details as $k => $v) {
			if (!empty($v['readonly'])) continue;
			$result[$k] = $v;
			$result[$k]['model'] = $k;
			$result[$k]['__parent'] = $parent;
			if (!empty($v['details'])) {
				$parent[] = $k;
				$this->disassembleCollectionObject($v['details'], $result, $parent);
			}
			unset($result[$k]['details']);
		}
	}