diff --git a/core/composer.lock b/core/composer.lock
index 4e155f1..fbf602c 100644
--- a/core/composer.lock
+++ b/core/composer.lock
@@ -1371,16 +1371,16 @@
         },
         {
             "name": "phpunit/php-token-stream",
-            "version": "1.4.1",
+            "version": "1.4.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "eab81d02569310739373308137284e0158424330"
+                "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330",
-                "reference": "eab81d02569310739373308137284e0158424330",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
+                "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
                 "shasum": ""
             },
             "require": {
@@ -1416,7 +1416,7 @@
             "keywords": [
                 "tokenizer"
             ],
-            "time": "2015-04-08 04:46:07"
+            "time": "2015-08-16 08:51:00"
         },
         {
             "name": "phpunit/phpunit",
diff --git a/core/vendor/composer/autoload_classmap.php b/core/vendor/composer/autoload_classmap.php
index f1b1312..4c57717 100644
--- a/core/vendor/composer/autoload_classmap.php
+++ b/core/vendor/composer/autoload_classmap.php
@@ -223,7 +223,9 @@
     'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
@@ -243,9 +245,11 @@
     'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
@@ -280,7 +284,9 @@
     'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
@@ -339,6 +345,7 @@
     'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
@@ -364,6 +371,7 @@
     'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
@@ -387,10 +395,21 @@
     'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
     'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
     'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json
index e7c44d1..163db53 100644
--- a/core/vendor/composer/installed.json
+++ b/core/vendor/composer/installed.json
@@ -881,57 +881,6 @@
         ]
     },
     {
-        "name": "phpunit/php-token-stream",
-        "version": "1.4.1",
-        "version_normalized": "1.4.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-            "reference": "eab81d02569310739373308137284e0158424330"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330",
-            "reference": "eab81d02569310739373308137284e0158424330",
-            "shasum": ""
-        },
-        "require": {
-            "ext-tokenizer": "*",
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.2"
-        },
-        "time": "2015-04-08 04:46:07",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
-            }
-        ],
-        "description": "Wrapper around PHP's tokenizer extension.",
-        "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-        "keywords": [
-            "tokenizer"
-        ]
-    },
-    {
         "name": "phpunit/php-file-iterator",
         "version": "1.4.0",
         "version_normalized": "1.4.0.0",
@@ -3486,5 +3435,56 @@
         "keywords": [
             "templating"
         ]
+    },
+    {
+        "name": "phpunit/php-token-stream",
+        "version": "1.4.6",
+        "version_normalized": "1.4.6.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+            "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
+            "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
+            "shasum": ""
+        },
+        "require": {
+            "ext-tokenizer": "*",
+            "php": ">=5.3.3"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "~4.2"
+        },
+        "time": "2015-08-16 08:51:00",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.4-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
+            }
+        ],
+        "description": "Wrapper around PHP's tokenizer extension.",
+        "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+        "keywords": [
+            "tokenizer"
+        ]
     }
 ]
diff --git a/core/vendor/phpunit/php-token-stream/.travis.yml b/core/vendor/phpunit/php-token-stream/.travis.yml
index e1bd2d3..bc962b7 100644
--- a/core/vendor/phpunit/php-token-stream/.travis.yml
+++ b/core/vendor/phpunit/php-token-stream/.travis.yml
@@ -7,7 +7,6 @@ php:
   - 5.5
   - 5.6
   - hhvm
-  - hhvm-nightly
 
 before_script:
   - composer self-update
diff --git a/core/vendor/phpunit/php-token-stream/src/Token.php b/core/vendor/phpunit/php-token-stream/src/Token.php
index 9147499..85c1846 100644
--- a/core/vendor/phpunit/php-token-stream/src/Token.php
+++ b/core/vendor/phpunit/php-token-stream/src/Token.php
@@ -14,7 +14,6 @@
  * @author    Sebastian Bergmann <sebastian@phpunit.de>
  * @copyright Sebastian Bergmann <sebastian@phpunit.de>
  * @license   http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @version   Release: @package_version@
  * @link      http://github.com/sebastianbergmann/php-token-stream/tree
  * @since     Class available since Release 1.0.0
  */
@@ -75,6 +74,9 @@ public function getLine()
 
 abstract class PHP_TokenWithScope extends PHP_Token
 {
+    /**
+     * @var integer
+     */
     protected $endTokenId;
 
     /**
@@ -122,27 +124,26 @@ public function getDocblock()
         }
     }
 
+    /**
+     * @return integer
+     */
     public function getEndTokenId()
     {
         $block  = 0;
         $i      = $this->id;
         $tokens = $this->tokenStream->tokens();
 
-        while ($this->endTokenId === NULL && isset($tokens[$i])) {
+        while ($this->endTokenId === null && isset($tokens[$i])) {
             if ($tokens[$i] instanceof PHP_Token_OPEN_CURLY ||
                 $tokens[$i] instanceof PHP_Token_CURLY_OPEN) {
                 $block++;
-            }
-
-            else if ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) {
+            } elseif ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) {
                 $block--;
 
                 if ($block === 0) {
                     $this->endTokenId = $i;
                 }
-            }
-
-            else if (($this instanceof PHP_Token_FUNCTION ||
+            } elseif (($this instanceof PHP_Token_FUNCTION ||
                 $this instanceof PHP_Token_NAMESPACE) &&
                 $tokens[$i] instanceof PHP_Token_SEMICOLON) {
                 if ($block === 0) {
@@ -153,22 +154,27 @@ public function getEndTokenId()
             $i++;
         }
 
-        if ($this->endTokenId === NULL) {
+        if ($this->endTokenId === null) {
             $this->endTokenId = $this->id;
         }
 
         return $this->endTokenId;
     }
 
+    /**
+     * @return integer
+     */
     public function getEndLine()
     {
         return $this->tokenStream[$this->getEndTokenId()]->getLine();
     }
-
 }
 
-abstract class PHP_TokenWithScopeAndVisibility extends PHP_TokenWithScope {
-
+abstract class PHP_TokenWithScopeAndVisibility extends PHP_TokenWithScope
+{
+    /**
+     * @return string
+     */
     public function getVisibility()
     {
         $tokens = $this->tokenStream->tokens();
@@ -179,7 +185,7 @@ public function getVisibility()
                 $tokens[$i] instanceof PHP_Token_PROTECTED ||
                 $tokens[$i] instanceof PHP_Token_PUBLIC)) {
                 return strtolower(
-                  str_replace('PHP_Token_', '', get_class($tokens[$i]))
+                    str_replace('PHP_Token_', '', get_class($tokens[$i]))
                 );
             }
             if (isset($tokens[$i]) &&
@@ -192,10 +198,13 @@ public function getVisibility()
         }
     }
 
+    /**
+     * @return string
+     */
     public function getKeywords()
     {
         $keywords = array();
-        $tokens = $this->tokenStream->tokens();
+        $tokens   = $this->tokenStream->tokens();
 
         for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) {
             if (isset($tokens[$i]) &&
@@ -210,78 +219,113 @@ public function getKeywords()
                 $tokens[$i] instanceof PHP_Token_FINAL ||
                 $tokens[$i] instanceof PHP_Token_ABSTRACT)) {
                 $keywords[] = strtolower(
-                  str_replace('PHP_Token_', '', get_class($tokens[$i]))
+                    str_replace('PHP_Token_', '', get_class($tokens[$i]))
                 );
             }
         }
 
         return implode(',', $keywords);
     }
-
 }
 
 abstract class PHP_Token_Includes extends PHP_Token
 {
+    /**
+     * @var string
+     */
     protected $name;
+
+    /**
+     * @var string
+     */
     protected $type;
 
+    /**
+     * @return string
+     */
     public function getName()
     {
-        if ($this->name !== NULL) {
-            return $this->name;
+        if ($this->name === null) {
+            $this->process();
         }
 
+        return $this->name;
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        if ($this->type === null) {
+            $this->process();
+        }
+
+        return $this->type;
+    }
+
+    private function process()
+    {
         $tokens = $this->tokenStream->tokens();
 
         if ($tokens[$this->id+2] instanceof PHP_Token_CONSTANT_ENCAPSED_STRING) {
             $this->name = trim($tokens[$this->id+2], "'\"");
             $this->type = strtolower(
-              str_replace('PHP_Token_', '', get_class($tokens[$this->id]))
+                str_replace('PHP_Token_', '', get_class($tokens[$this->id]))
             );
         }
-
-        return $this->name;
-    }
-
-    public function getType()
-    {
-        $this->getName();
-        return $this->type;
     }
 }
 
 
 class PHP_Token_FUNCTION extends PHP_TokenWithScopeAndVisibility
 {
+    /**
+     * @var array
+     */
     protected $arguments;
+
+    /**
+     * @var integer
+     */
     protected $ccn;
+
+    /**
+     * @var string
+     */
     protected $name;
+
+    /**
+     * @var string
+     */
     protected $signature;
 
+    /**
+     * @return array
+     */
     public function getArguments()
     {
-        if ($this->arguments !== NULL) {
+        if ($this->arguments !== null) {
             return $this->arguments;
         }
 
         $this->arguments = array();
         $tokens          = $this->tokenStream->tokens();
-        $typeHint        = NULL;
+        $typeDeclaration = null;
 
         // Search for first token inside brackets
         $i = $this->id + 2;
+
         while (!$tokens[$i-1] instanceof PHP_Token_OPEN_BRACKET) {
             $i++;
         }
 
         while (!$tokens[$i] instanceof PHP_Token_CLOSE_BRACKET) {
             if ($tokens[$i] instanceof PHP_Token_STRING) {
-                $typeHint = (string)$tokens[$i];
-            }
-
-            else if ($tokens[$i] instanceof PHP_Token_VARIABLE) {
-                $this->arguments[(string)$tokens[$i]] = $typeHint;
-                $typeHint                             = NULL;
+                $typeDeclaration = (string)$tokens[$i];
+            } elseif ($tokens[$i] instanceof PHP_Token_VARIABLE) {
+                $this->arguments[(string)$tokens[$i]] = $typeDeclaration;
+                $typeDeclaration                      = null;
             }
 
             $i++;
@@ -290,9 +334,12 @@ public function getArguments()
         return $this->arguments;
     }
 
+    /**
+     * @return string
+     */
     public function getName()
     {
-        if ($this->name !== NULL) {
+        if ($this->name !== null) {
             return $this->name;
         }
 
@@ -302,15 +349,11 @@ public function getName()
             if ($tokens[$i] instanceof PHP_Token_STRING) {
                 $this->name = (string)$tokens[$i];
                 break;
-            }
-
-            else if ($tokens[$i] instanceof PHP_Token_AMPERSAND &&
+            } elseif ($tokens[$i] instanceof PHP_Token_AMPERSAND &&
                      $tokens[$i+1] instanceof PHP_Token_STRING) {
                 $this->name = (string)$tokens[$i+1];
                 break;
-            }
-
-            else if ($tokens[$i] instanceof PHP_Token_OPEN_BRACKET) {
+            } elseif ($tokens[$i] instanceof PHP_Token_OPEN_BRACKET) {
                 $this->name = 'anonymous function';
                 break;
             }
@@ -332,9 +375,12 @@ public function getName()
         return $this->name;
     }
 
+    /**
+     * @return integer
+     */
     public function getCCN()
     {
-        if ($this->ccn !== NULL) {
+        if ($this->ccn !== null) {
             return $this->ccn;
         }
 
@@ -355,19 +401,21 @@ public function getCCN()
                 case 'PHP_Token_LOGICAL_AND':
                 case 'PHP_Token_BOOLEAN_OR':
                 case 'PHP_Token_LOGICAL_OR':
-                case 'PHP_Token_QUESTION_MARK': {
+                case 'PHP_Token_QUESTION_MARK':
                     $this->ccn++;
-                }
-                break;
+                    break;
             }
         }
 
         return $this->ccn;
     }
 
+    /**
+     * @return string
+     */
     public function getSignature()
     {
-        if ($this->signature !== NULL) {
+        if ($this->signature !== null) {
             return $this->signature;
         }
 
@@ -395,29 +443,41 @@ public function getSignature()
 
 class PHP_Token_INTERFACE extends PHP_TokenWithScopeAndVisibility
 {
+    /**
+     * @var array
+     */
     protected $interfaces;
 
+    /**
+     * @return string
+     */
     public function getName()
     {
         return (string)$this->tokenStream[$this->id + 2];
     }
 
+    /**
+     * @return boolean
+     */
     public function hasParent()
     {
         return $this->tokenStream[$this->id + 4] instanceof PHP_Token_EXTENDS;
     }
 
+    /**
+     * @return array
+     */
     public function getPackage()
     {
         $className  = $this->getName();
         $docComment = $this->getDocblock();
 
         $result = array(
-          'namespace'   => '',
-          'fullPackage' => '',
-          'category'    => '',
-          'package'     => '',
-          'subpackage'  => ''
+            'namespace'   => '',
+            'fullPackage' => '',
+            'category'    => '',
+            'package'     => '',
+            'subpackage'  => ''
         );
 
         for ($i = $this->id; $i; --$i) {
@@ -443,13 +503,19 @@ public function getPackage()
 
         if (empty($result['fullPackage'])) {
             $result['fullPackage'] = $this->arrayToName(
-              explode('_', str_replace('\\', '_', $className)), '.'
+                explode('_', str_replace('\\', '_', $className)),
+                '.'
             );
         }
 
         return $result;
     }
 
+    /**
+     * @param  array  $parts
+     * @param  string $join
+     * @return string
+     */
     protected function arrayToName(array $parts, $join = '\\')
     {
         $result = '';
@@ -463,10 +529,13 @@ protected function arrayToName(array $parts, $join = '\\')
         return $result;
     }
 
+    /**
+     * @return boolean|string
+     */
     public function getParent()
     {
         if (!$this->hasParent()) {
-            return FALSE;
+            return false;
         }
 
         $i         = $this->id + 6;
@@ -481,6 +550,9 @@ public function getParent()
         return $className;
     }
 
+    /**
+     * @return boolean
+     */
     public function hasInterfaces()
     {
         return (isset($this->tokenStream[$this->id + 4]) &&
@@ -489,14 +561,17 @@ public function hasInterfaces()
                 $this->tokenStream[$this->id + 8] instanceof PHP_Token_IMPLEMENTS);
     }
 
+    /**
+     * @return array|boolean
+     */
     public function getInterfaces()
     {
-        if ($this->interfaces !== NULL) {
+        if ($this->interfaces !== null) {
             return $this->interfaces;
         }
 
         if (!$this->hasInterfaces()) {
-            return ($this->interfaces = FALSE);
+            return ($this->interfaces = false);
         }
 
         if ($this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) {
@@ -536,7 +611,32 @@ class PHP_Token_CARET extends PHP_Token {}
 class PHP_Token_CASE extends PHP_Token {}
 class PHP_Token_CATCH extends PHP_Token {}
 class PHP_Token_CHARACTER extends PHP_Token {}
-class PHP_Token_CLASS extends PHP_Token_INTERFACE {}
+
+class PHP_Token_CLASS extends PHP_Token_INTERFACE
+{
+    /**
+     * @return string
+     */
+    public function getName()
+    {
+        $next = $this->tokenStream[$this->id + 1];
+
+        if ($next instanceof PHP_Token_WHITESPACE) {
+            $next = $this->tokenStream[$this->id + 2];
+        }
+
+        if ($next instanceof PHP_Token_STRING) {
+            return (string) $next;
+        }
+
+        if ($next instanceof PHP_Token_OPEN_CURLY ||
+            $next instanceof PHP_Token_EXTENDS ||
+            $next instanceof PHP_Token_IMPLEMENTS) {
+            return 'anonymous class';
+        }
+    }
+}
+
 class PHP_Token_CLASS_C extends PHP_Token {}
 class PHP_Token_CLASS_NAME_CONSTANT extends PHP_Token {}
 class PHP_Token_CLONE extends PHP_Token {}
@@ -674,12 +774,15 @@ class PHP_Token_GOTO extends PHP_Token {}
 
 class PHP_Token_NAMESPACE extends PHP_TokenWithScope
 {
+    /**
+     * @return string
+     */
     public function getName()
     {
         $tokens    = $this->tokenStream->tokens();
         $namespace = (string)$tokens[$this->id+2];
 
-        for ($i = $this->id + 3; ; $i += 2) {
+        for ($i = $this->id + 3;; $i += 2) {
             if (isset($tokens[$i]) &&
                 $tokens[$i] instanceof PHP_Token_NS_SEPARATOR) {
                 $namespace .= '\\' . $tokens[$i+1];
@@ -710,14 +813,34 @@ class PHP_Token_ELLIPSIS extends PHP_Token {}
 class PHP_Token_POW extends PHP_Token {}
 class PHP_Token_POW_EQUAL extends PHP_Token {}
 
+// Tokens introduced in PHP 7.0
+class PHP_Token_COALESCE extends PHP_Token {}
+class PHP_Token_SPACESHIP extends PHP_Token {}
+class PHP_Token_YIELD_FROM extends PHP_Token {}
 
-// Tokens introduced in HackLang
-class PHP_Token_TYPELIST_LT extends PHP_Token {}
-class PHP_Token_TYPELIST_GT extends PHP_Token {}
-class PHP_Token_TYPE extends PHP_Token {}
-class PHP_Token_SHAPE extends PHP_Token {}
-class PHP_Token_LAMBDA_OP extends PHP_Token {}
-class PHP_Token_LAMBDA_CP extends PHP_Token {}
-class PHP_Token_LAMBDA_ARROW extends PHP_Token {}
+// Tokens introduced in HackLang / HHVM
+class PHP_Token_ASYNC extends PHP_Token {}
+class PHP_Token_AWAIT extends PHP_Token {}
+class PHP_Token_COMPILER_HALT_OFFSET extends PHP_Token {}
+class PHP_Token_ENUM extends PHP_Token {}
+class PHP_Token_EQUALS extends PHP_Token {}
 class PHP_Token_IN extends PHP_Token {}
 class PHP_Token_JOIN extends PHP_Token {}
+class PHP_Token_LAMBDA_ARROW extends PHP_Token {}
+class PHP_Token_LAMBDA_CP extends PHP_Token {}
+class PHP_Token_LAMBDA_OP extends PHP_Token {}
+class PHP_Token_ONUMBER extends PHP_Token {}
+class PHP_Token_SHAPE extends PHP_Token {}
+class PHP_Token_TYPE extends PHP_Token {}
+class PHP_Token_TYPELIST_GT extends PHP_Token {}
+class PHP_Token_TYPELIST_LT extends PHP_Token {}
+class PHP_Token_WHERE extends PHP_Token {}
+class PHP_Token_XHP_ATTRIBUTE extends PHP_Token {}
+class PHP_Token_XHP_CATEGORY extends PHP_Token {}
+class PHP_Token_XHP_CATEGORY_LABEL extends PHP_Token {}
+class PHP_Token_XHP_CHILDREN extends PHP_Token {}
+class PHP_Token_XHP_LABEL extends PHP_Token {}
+class PHP_Token_XHP_REQUIRED extends PHP_Token {}
+class PHP_Token_XHP_TAG_GT extends PHP_Token {}
+class PHP_Token_XHP_TAG_LT extends PHP_Token {}
+class PHP_Token_XHP_TEXT extends PHP_Token {}
diff --git a/core/vendor/phpunit/php-token-stream/src/Token/Stream.php b/core/vendor/phpunit/php-token-stream/src/Token/Stream.php
index e25cbe2..a9c69be 100644
--- a/core/vendor/phpunit/php-token-stream/src/Token/Stream.php
+++ b/core/vendor/phpunit/php-token-stream/src/Token/Stream.php
@@ -14,7 +14,6 @@
  * @author    Sebastian Bergmann <sebastian@phpunit.de>
  * @copyright Sebastian Bergmann <sebastian@phpunit.de>
  * @license   http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @version   Release: @package_version@
  * @link      http://github.com/sebastianbergmann/php-token-stream/tree
  * @since     Class available since Release 1.0.0
  */
@@ -24,34 +23,34 @@ class PHP_Token_Stream implements ArrayAccess, Countable, SeekableIterator
      * @var array
      */
     protected static $customTokens = array(
-      '(' => 'PHP_Token_OPEN_BRACKET',
-      ')' => 'PHP_Token_CLOSE_BRACKET',
-      '[' => 'PHP_Token_OPEN_SQUARE',
-      ']' => 'PHP_Token_CLOSE_SQUARE',
-      '{' => 'PHP_Token_OPEN_CURLY',
-      '}' => 'PHP_Token_CLOSE_CURLY',
-      ';' => 'PHP_Token_SEMICOLON',
-      '.' => 'PHP_Token_DOT',
-      ',' => 'PHP_Token_COMMA',
-      '=' => 'PHP_Token_EQUAL',
-      '<' => 'PHP_Token_LT',
-      '>' => 'PHP_Token_GT',
-      '+' => 'PHP_Token_PLUS',
-      '-' => 'PHP_Token_MINUS',
-      '*' => 'PHP_Token_MULT',
-      '/' => 'PHP_Token_DIV',
-      '?' => 'PHP_Token_QUESTION_MARK',
-      '!' => 'PHP_Token_EXCLAMATION_MARK',
-      ':' => 'PHP_Token_COLON',
-      '"' => 'PHP_Token_DOUBLE_QUOTES',
-      '@' => 'PHP_Token_AT',
-      '&' => 'PHP_Token_AMPERSAND',
-      '%' => 'PHP_Token_PERCENT',
-      '|' => 'PHP_Token_PIPE',
-      '$' => 'PHP_Token_DOLLAR',
-      '^' => 'PHP_Token_CARET',
-      '~' => 'PHP_Token_TILDE',
-      '`' => 'PHP_Token_BACKTICK'
+        '(' => 'PHP_Token_OPEN_BRACKET',
+        ')' => 'PHP_Token_CLOSE_BRACKET',
+        '[' => 'PHP_Token_OPEN_SQUARE',
+        ']' => 'PHP_Token_CLOSE_SQUARE',
+        '{' => 'PHP_Token_OPEN_CURLY',
+        '}' => 'PHP_Token_CLOSE_CURLY',
+        ';' => 'PHP_Token_SEMICOLON',
+        '.' => 'PHP_Token_DOT',
+        ',' => 'PHP_Token_COMMA',
+        '=' => 'PHP_Token_EQUAL',
+        '<' => 'PHP_Token_LT',
+        '>' => 'PHP_Token_GT',
+        '+' => 'PHP_Token_PLUS',
+        '-' => 'PHP_Token_MINUS',
+        '*' => 'PHP_Token_MULT',
+        '/' => 'PHP_Token_DIV',
+        '?' => 'PHP_Token_QUESTION_MARK',
+        '!' => 'PHP_Token_EXCLAMATION_MARK',
+        ':' => 'PHP_Token_COLON',
+        '"' => 'PHP_Token_DOUBLE_QUOTES',
+        '@' => 'PHP_Token_AT',
+        '&' => 'PHP_Token_AMPERSAND',
+        '%' => 'PHP_Token_PERCENT',
+        '|' => 'PHP_Token_PIPE',
+        '$' => 'PHP_Token_DOLLAR',
+        '^' => 'PHP_Token_CARET',
+        '~' => 'PHP_Token_TILDE',
+        '`' => 'PHP_Token_BACKTICK'
     );
 
     /**
@@ -162,7 +161,7 @@ protected function scan($sourceCode)
         $tokens    = token_get_all($sourceCode);
         $numTokens = count($tokens);
 
-        $lastNonWhitespaceTokenWasDoubleColon = FALSE;
+        $lastNonWhitespaceTokenWasDoubleColon = false;
 
         for ($i = 0; $i < $numTokens; ++$i) {
             $token = $tokens[$i];
@@ -188,19 +187,15 @@ protected function scan($sourceCode)
 
             if ($tokenClass == 'PHP_Token_HALT_COMPILER') {
                 break;
-            }
-
-            else if ($tokenClass == 'PHP_Token_COMMENT' ||
+            } elseif ($tokenClass == 'PHP_Token_COMMENT' ||
                 $tokenClass == 'PHP_Token_DOC_COMMENT') {
                 $this->linesOfCode['cloc'] += $lines + 1;
             }
 
             if ($name == 'DOUBLE_COLON') {
-                $lastNonWhitespaceTokenWasDoubleColon = TRUE;
-            }
-
-            else if ($name != 'WHITESPACE') {
-                $lastNonWhitespaceTokenWasDoubleColon = FALSE;
+                $lastNonWhitespaceTokenWasDoubleColon = true;
+            } elseif ($name != 'WHITESPACE') {
+                $lastNonWhitespaceTokenWasDoubleColon = false;
             }
         }
 
@@ -230,7 +225,7 @@ public function tokens()
      */
     public function getClasses()
     {
-        if ($this->classes !== NULL) {
+        if ($this->classes !== null) {
             return $this->classes;
         }
 
@@ -244,7 +239,7 @@ public function getClasses()
      */
     public function getFunctions()
     {
-        if ($this->functions !== NULL) {
+        if ($this->functions !== null) {
             return $this->functions;
         }
 
@@ -258,7 +253,7 @@ public function getFunctions()
      */
     public function getInterfaces()
     {
-        if ($this->interfaces !== NULL) {
+        if ($this->interfaces !== null) {
             return $this->interfaces;
         }
 
@@ -273,7 +268,7 @@ public function getInterfaces()
      */
     public function getTraits()
     {
-        if ($this->traits !== NULL) {
+        if ($this->traits !== null) {
             return $this->traits;
         }
 
@@ -298,9 +293,9 @@ public function getTraits()
      * @return array
      * @since  Method available since Release 1.1.0
      */
-    public function getIncludes($categorize = FALSE, $category = NULL)
+    public function getIncludes($categorize = false, $category = null)
     {
-        if ($this->includes === NULL) {
+        if ($this->includes === null) {
             $this->includes = array(
               'require_once' => array(),
               'require'      => array(),
@@ -313,24 +308,21 @@ public function getIncludes($categorize = FALSE, $category = NULL)
                     case 'PHP_Token_REQUIRE_ONCE':
                     case 'PHP_Token_REQUIRE':
                     case 'PHP_Token_INCLUDE_ONCE':
-                    case 'PHP_Token_INCLUDE': {
+                    case 'PHP_Token_INCLUDE':
                         $this->includes[$token->getType()][] = $token->getName();
-                    }
-                    break;
+                        break;
                 }
             }
         }
 
         if (isset($this->includes[$category])) {
             $includes = $this->includes[$category];
-        }
-
-        else if ($categorize === FALSE) {
+        } elseif ($categorize === false) {
             $includes = array_merge(
-              $this->includes['require_once'],
-              $this->includes['require'],
-              $this->includes['include_once'],
-              $this->includes['include']
+                $this->includes['require_once'],
+                $this->includes['require'],
+                $this->includes['include_once'],
+                $this->includes['include']
             );
         } else {
             $includes = $this->includes;
@@ -360,21 +352,19 @@ protected function parse()
         $this->classes    = array();
         $this->traits     = array();
         $this->functions  = array();
-        $class            = FALSE;
-        $classEndLine     = FALSE;
-        $trait            = FALSE;
-        $traitEndLine     = FALSE;
-        $interface        = FALSE;
-        $interfaceEndLine = FALSE;
+        $class            = false;
+        $classEndLine     = false;
+        $trait            = false;
+        $traitEndLine     = false;
+        $interface        = false;
+        $interfaceEndLine = false;
 
         foreach ($this->tokens as $token) {
             switch (get_class($token)) {
-                case 'PHP_Token_HALT_COMPILER': {
+                case 'PHP_Token_HALT_COMPILER':
                     return;
-                }
-                break;
 
-                case 'PHP_Token_INTERFACE': {
+                case 'PHP_Token_INTERFACE':
                     $interface        = $token->getName();
                     $interfaceEndLine = $token->getEndLine();
 
@@ -388,11 +378,10 @@ protected function parse()
                       'package'   => $token->getPackage(),
                       'file'      => $this->filename
                     );
-                }
-                break;
+                    break;
 
                 case 'PHP_Token_CLASS':
-                case 'PHP_Token_TRAIT': {
+                case 'PHP_Token_TRAIT':
                     $tmp = array(
                       'methods'   => array(),
                       'parent'    => $token->getParent(),
@@ -408,16 +397,18 @@ protected function parse()
                     if ($token instanceof PHP_Token_CLASS) {
                         $class                 = $token->getName();
                         $classEndLine          = $token->getEndLine();
-                        $this->classes[$class] = $tmp;
+
+                        if ($class != 'anonymous class') {
+                            $this->classes[$class] = $tmp;
+                        }
                     } else {
                         $trait                = $token->getName();
                         $traitEndLine         = $token->getEndLine();
                         $this->traits[$trait] = $tmp;
                     }
-                }
-                break;
+                    break;
 
-                case 'PHP_Token_FUNCTION': {
+                case 'PHP_Token_FUNCTION':
                     $name = $token->getName();
                     $tmp  = array(
                       'docblock'  => $token->getDocblock(),
@@ -430,62 +421,52 @@ protected function parse()
                       'file'      => $this->filename
                     );
 
-                    if ($class === FALSE &&
-                        $trait === FALSE &&
-                        $interface === FALSE) {
+                    if ($class === false &&
+                        $trait === false &&
+                        $interface === false) {
                         $this->functions[$name] = $tmp;
 
                         $this->addFunctionToMap(
-                          $name, $tmp['startLine'], $tmp['endLine']
+                            $name,
+                            $tmp['startLine'],
+                            $tmp['endLine']
                         );
-                    }
-
-                    else if ($class !== FALSE) {
+                    } elseif ($class !== false && $class != 'anonymous class') {
                         $this->classes[$class]['methods'][$name] = $tmp;
 
                         $this->addFunctionToMap(
-                          $class . '::' . $name,
-                          $tmp['startLine'],
-                          $tmp['endLine']
+                            $class . '::' . $name,
+                            $tmp['startLine'],
+                            $tmp['endLine']
                         );
-                    }
-
-                    else if ($trait !== FALSE) {
+                    } elseif ($trait !== false) {
                         $this->traits[$trait]['methods'][$name] = $tmp;
 
                         $this->addFunctionToMap(
-                          $trait . '::' . $name,
-                          $tmp['startLine'],
-                          $tmp['endLine']
+                            $trait . '::' . $name,
+                            $tmp['startLine'],
+                            $tmp['endLine']
                         );
-                    }
-
-                    else {
+                    } else {
                         $this->interfaces[$interface]['methods'][$name] = $tmp;
                     }
-                }
-                break;
+                    break;
 
-                case 'PHP_Token_CLOSE_CURLY': {
-                    if ($classEndLine !== FALSE &&
+                case 'PHP_Token_CLOSE_CURLY':
+                    if ($classEndLine !== false &&
                         $classEndLine == $token->getLine()) {
-                        $class        = FALSE;
-                        $classEndLine = FALSE;
-                    }
-
-                    else if ($traitEndLine !== FALSE &&
+                        $class        = false;
+                        $classEndLine = false;
+                    } elseif ($traitEndLine !== false &&
                         $traitEndLine == $token->getLine()) {
-                        $trait        = FALSE;
-                        $traitEndLine = FALSE;
-                    }
-
-                    else if ($interfaceEndLine !== FALSE &&
+                        $trait        = false;
+                        $traitEndLine = false;
+                    } elseif ($interfaceEndLine !== false &&
                         $interfaceEndLine == $token->getLine()) {
-                        $interface        = FALSE;
-                        $interfaceEndLine = FALSE;
+                        $interface        = false;
+                        $interfaceEndLine = false;
                     }
-                }
-                break;
+                    break;
             }
         }
     }
@@ -537,7 +518,8 @@ public function next()
     }
 
     /**
-     * @param mixed $offset
+     * @param  integer $offset
+     * @return boolean
      */
     public function offsetExists($offset)
     {
@@ -545,17 +527,27 @@ public function offsetExists($offset)
     }
 
     /**
-     * @param  mixed $offset
+     * @param  integer $offset
      * @return mixed
+     * @throws OutOfBoundsException
      */
     public function offsetGet($offset)
     {
+        if (!$this->offsetExists($offset)) {
+            throw new OutOfBoundsException(
+                sprintf(
+                    'No token at position "%s"',
+                    $offset
+                )
+            );
+        }
+
         return $this->tokens[$offset];
     }
 
     /**
-     * @param mixed $offset
-     * @param mixed $value
+     * @param integer $offset
+     * @param mixed   $value
      */
     public function offsetSet($offset, $value)
     {
@@ -563,10 +555,20 @@ public function offsetSet($offset, $value)
     }
 
     /**
-     * @param mixed $offset
+     * @param  integer $offset
+     * @throws OutOfBoundsException
      */
     public function offsetUnset($offset)
     {
+        if (!$this->offsetExists($offset)) {
+            throw new OutOfBoundsException(
+                sprintf(
+                    'No token at position "%s"',
+                    $offset
+                )
+            );
+        }
+
         unset($this->tokens[$offset]);
     }
 
@@ -581,10 +583,20 @@ public function seek($position)
         $this->position = $position;
 
         if (!$this->valid()) {
-            throw new OutOfBoundsException('Invalid seek position');
+            throw new OutOfBoundsException(
+                sprintf(
+                    'No token at position "%s"',
+                    $this->position
+                )
+            );
         }
     }
 
+    /**
+     * @param string  $name
+     * @param integer $startLine
+     * @param integer $endLine
+     */
     private function addFunctionToMap($name, $startLine, $endLine)
     {
         for ($line = $startLine; $line <= $endLine; $line++) {
diff --git a/core/vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php b/core/vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php
index a80d41a..b41b25f 100644
--- a/core/vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php
+++ b/core/vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php
@@ -14,7 +14,6 @@
  * @author    Sebastian Bergmann <sebastian@phpunit.de>
  * @copyright Sebastian Bergmann <sebastian@phpunit.de>
  * @license   http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @version   Release: @package_version@
  * @link      http://github.com/sebastianbergmann/php-token-stream/tree
  * @since     Class available since Release 1.0.0
  */
@@ -41,7 +40,7 @@ public static function get($filename)
     /**
      * @param string $filename
      */
-    public static function clear($filename = NULL)
+    public static function clear($filename = null)
     {
         if (is_string($filename)) {
             unset(self::$cache[$filename]);
diff --git a/core/vendor/phpunit/php-token-stream/tests/Token/ClassTest.php b/core/vendor/phpunit/php-token-stream/tests/Token/ClassTest.php
index d2a64b6..7080e56 100644
--- a/core/vendor/phpunit/php-token-stream/tests/Token/ClassTest.php
+++ b/core/vendor/phpunit/php-token-stream/tests/Token/ClassTest.php
@@ -81,4 +81,16 @@ public function testIssue30()
         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue30.php');
         $this->assertCount(1, $ts->getClasses());
     }
+
+    /**
+     * @requires PHP 7
+     */
+    public function testAnonymousClassesAreHandledCorrectly()
+    {
+        $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_that_declares_anonymous_class.php');
+
+        $classes = $ts->getClasses();
+
+        $this->assertEquals(array('class_with_method_that_declares_anonymous_class'), array_keys($classes));
+    }
 }
diff --git a/core/vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_that_declares_anonymous_class.php b/core/vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_that_declares_anonymous_class.php
new file mode 100644
index 0000000..4a02fe1
--- /dev/null
+++ b/core/vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_that_declares_anonymous_class.php
@@ -0,0 +1,15 @@
+<?php
+interface foo {
+}
+
+class class_with_method_that_declares_anonymous_class
+{
+    public function method()
+    {
+        $o = new class { public function foo() {} };
+        $o = new class{public function foo(){}};
+        $o = new class extends stdClass {};
+        $o = new class extends stdClass {};
+        $o = new class implements foo {};
+    }
+}
