public function getBlockList($area = null, $includeDisabled = false)
	{
		$includeSets = $this->blockManager->getUseBlockSets() && $this->owner->InheritBlockSets;
		$blocks = ArrayList::create();

		// get blocks directly linked to this page
		$nativeBlocks = $this->owner->Blocks()->sort('Sort');
		if ($area) {
			$nativeBlocks = $nativeBlocks->filter('BlockArea', $area);
		}

		if ($nativeBlocks->count()) {
			foreach ($nativeBlocks as $block) {
				$blocks->add($block);
			}
		}

		// get blocks from BlockSets
		if ($includeSets) {
			$blocksFromSets = $this->getBlocksFromAppliedBlockSets($area, $includeDisabled);
			if ($blocksFromSets->count()) {
				// merge set sources
				foreach ($blocksFromSets as $block) {
					if (!$blocks->find('ID', $block->ID)) {
						if ($block->AboveOrBelow == 'Above') {
							$blocks->unshift($block);
						} else {
							$blocks->push($block);
						}
					}
				}
			}
		}

		return $blocks;
	}