public function getBlockColumns($includeParent = true)
    {
        // load columns if they haven't been loaded yet
        if ($this->blockColumns === null) {
            $this->loadBlockColumns();

        }
        $blockColumns = $this->blockColumns;


        // also load parent(s) columns if requested
        if ($includeParent) {
            $parentModel = $this->getParentModel(true);
            if ($parentModel) {
                /** @var BaseModel $parentModel */
                $parentModel = new $parentModel();
                $parentColumns = $parentModel->getBlockColumns(true);

                // the parent model may return null, let's catch and change to an empty array
                // thus indicating that block columns have been "loaded" even if they are blank
                if ($parentColumns == null) {
                    $parentColumns = [];
                }
                $blockColumns = array_unique(array_merge($blockColumns, $parentColumns));
            }
        }

        // return block columns
        return $blockColumns;
    }