protected function prepareAttributeDistinctCountMeasure(__CubeUIMetaDataGenerator_CallContext $callcontext, AbstractRootElementUIMetaData $attributeUIMetaData, $referencePath, CubeMetaData $cube, ColumnMetaData $column, $attributeName) {
        $measureName = StarSchemaNamingConvention::getAttributeRelatedMeasureName(
            $attributeName, StarSchemaNamingConvention::$MEASURE_NAME_SUFFIX__DISTINCT_COUNT);
        // the measure has been used already
        if (!isset($callcontext->usedMeasureNames[$measureName]) || $callcontext->usedMeasureNames[$measureName]) {
            return;
        }

        $measure = $cube->findMeasure($measureName);
        if (!isset($measure)) {
            return;
        }

        $measureUIMetaData = new AttributeMeasureUIMetaData();
        $measureUIMetaData->name = self::prepareMeasureUIMetaDataName($referencePath, $cube, $measureName);
        $measureUIMetaData->publicName = $column->publicName;
        $measureUIMetaData->description = $measure->description;
        $measureUIMetaData->type = clone $measure->type;

        $attributeUIMetaData->registerElement($measureUIMetaData);

        // marking that the measure is used by this attribute
        $callcontext->usedMeasureNames[$measureName] = TRUE;
    }
    public function __clone() {
        parent::__clone();

        if (isset($this->type)) {
            $this->type = clone $this->type;
        }
    }