I think you can probably boost this up, and bypass the whole "is this value my type" check and just return if value is None -- a missing complex type attr that is a simple type returns None when accessed anyway. But if that causes problems I'm not seeing, this is fine, obj._child_count should increment if we're really setting something.