diff --git a/core/lib/Drupal/Core/Condition/ConditionInterface.php b/core/lib/Drupal/Core/Condition/ConditionInterface.php
index fd1b374..53766e2 100644
--- a/core/lib/Drupal/Core/Condition/ConditionInterface.php
+++ b/core/lib/Drupal/Core/Condition/ConditionInterface.php
@@ -54,6 +54,9 @@
    *
    * @return bool
    *   Whether the condition result will be negated.
+   *
+   * @deprecated Deprecated as of 8.0.0. Condition negation is an implementation
+   *   detail and should not be relied upon.
    */
   public function isNegated();
 
diff --git a/core/lib/Drupal/Core/Condition/ConditionManager.php b/core/lib/Drupal/Core/Condition/ConditionManager.php
index 0fef97b..890ef5f 100644
--- a/core/lib/Drupal/Core/Condition/ConditionManager.php
+++ b/core/lib/Drupal/Core/Condition/ConditionManager.php
@@ -68,8 +68,11 @@ public function createInstance($plugin_id, array $configuration = array()) {
    * Implements Drupal\Core\Executable\ExecutableManagerInterface::execute().
    */
   public function execute(ExecutableInterface $condition) {
-    $result = $condition->evaluate();
-    return $condition->isNegated() ? !$result : $result;
+    if (!($condition instanceof ConditionInterface)) {
+      throw new \InvalidArgumentException(sprintf('%s must be an instance of %s, but %s was given.', '$condition', '\Drupal\Core\Condition\ConditionInterface', get_class($condition)));
+    }
+
+    return $condition->evaluate();
   }
 
 }
