def available_element_definitions(only_element_named = nil)
      @_element_definitions ||= if only_element_named
        definition = Element.definition_by_name(only_element_named)
        element_definitions_by_name(definition['nestable_elements'])
      else
        element_definitions
      end

      return [] if @_element_definitions.blank?

      @_existing_element_names = elements_including_fixed.pluck(:name)
      delete_unique_element_definitions!
      delete_outnumbered_element_definitions!

      @_element_definitions
    end
def available_element_definitions(only_element_named = nil)
      @_element_definitions ||= if only_element_named
        definition = Element.definition_by_name(only_element_named)
        element_definitions_by_name(definition['nestable_elements'])
      else
        element_definitions
      end

      return [] if @_element_definitions.blank?

      @_existing_element_names = elements_including_fixed.pluck(:name)
      delete_unique_element_definitions!
      delete_outnumbered_element_definitions!

      @_element_definitions
    end
All available element definitions that can actually be placed on current page.

 It extracts all definitions that are unique or limited and already on page.

 == Example of unique element:

   - name: headline
     unique: true
     contents:
     - name: headline
       type: EssenceText

 == Example of limited element:

   - name: article
     amount: 2
     contents:
     - name: text
       type: EssenceRichtext