public function prepareMetaDataColumn(RecordMetaData $recordMetaData, ColumnMetaData $column, $originalColumnName) {
        parent::prepareMetaDataColumn($recordMetaData, $column, $originalColumnName);

        $columnPublicName = isset($originalColumnName) ? $this->publicNameGenerator->generate($originalColumnName) : $column->name;

        $column->publicName = $columnPublicName;
    }
    public function prepareMetaDataColumn(RecordMetaData $recordMetaData, ColumnMetaData $column, $originalColumnName) {
        parent::prepareMetaDataColumn($recordMetaData, $column, $originalColumnName);

        // at first we try to prepare public name ...
        $columnPublicName = isset($originalColumnName) ? $this->publicNameGenerator->generate($originalColumnName) : NULL;

        // ... then we use that 'cleaned' public name to generate column name
        $columnName = isset($columnPublicName) ? $this->nameGenerator->generate($columnPublicName) : NULL;

        // checking if the name is too long
        $adjustedColumnName = $this->adjustColumnName($recordMetaData, $columnName);
        if (isset($adjustedColumnName)) {
            if ($adjustedColumnName === FALSE) {
                // there is nothing can be done to support meaningful name
                $columnName = NULL;
            }
            else {
                // the name was adjusted and is ready to be used
                $columnName = $adjustedColumnName;
            }
        }
        else {
            // trying to add numeric suffix
            $nameIndex = 2;
            while (TRUE) {
                $adjustedColumnName = $this->adjustColumnName($recordMetaData, $columnName . '_' . $nameIndex);
                if (isset($adjustedColumnName)) {
                    if ($adjustedColumnName === FALSE) {
                        // there is nothing can be done to support meaningful name
                        $columnName = NULL;
                    }
                    else {
                        // the name was adjusted and is ready to be used
                        $columnName = $adjustedColumnName;
                    }
                    break;
                }

                $nameIndex++;
            }
        }

        // generating indexed column name
        if (!isset($columnName)) {
            $index = 0;
            do {
                $index++;
                $columnName = (isset($this->columnPrefixName) ? $this->columnPrefixName : 'c') . $index;
            }
            while ($recordMetaData->findColumn($columnName) != NULL);

            // if length of 'hardcoded' name is greater than allowed we cannot proceed any further
            if (isset($this->maximumColumnNameLength) && (strlen($columnName) > $this->maximumColumnNameLength)) {
                throw new UnsupportedOperationException(t(
                    'System name cannot be generated for %columnName column. Maximum allowed length is %maximumColumnNameLength',
                    array('%columnName' => $originalColumnName, '%maximumColumnNameLength' => $this->maximumColumnNameLength)));
            }
        }

        $column->name = $columnName;
    }