public List<CmsProperty<?, ?>> filterScheduledContentAreasForSelectedContentArea(
      ContentObject contentObject) {

    List<CmsProperty<?, ?>> filteredScheduledContentAreas = new ArrayList<CmsProperty<?, ?>>();

    if (contentObject != null && selectedContentArea != null) {
      List<CmsProperty<?, ?>> scheduledContentAreas =
          contentObject
              .getComplexCmsRootProperty()
              .getChildPropertyList("scheduledContentAreaListType.scheduledContentArea");

      for (CmsProperty<?, ?> scheduledContentArea : scheduledContentAreas) {
        CmsProperty<?, ?> contentAreaProperty =
            ((ComplexCmsProperty<?, ?>) scheduledContentArea).getChildProperty("contentArea");

        if (contentAreaProperty != null
            && !((TopicReferenceProperty) contentAreaProperty).hasNoValues()
            && ((TopicReferenceProperty) contentAreaProperty)
                .getSimpleTypeValue()
                .getId()
                .equals(selectedContentArea.getId())) {
          filteredScheduledContentAreas.add(scheduledContentArea);
        }
      }
    }

    return filteredScheduledContentAreas;
  }