code: private function validateSeq($from, array $types, $a, $b)
      {
          $ta = Utils::type($a);
          $tb = Utils::type($b);
  
          if ($ta !== $tb) {
              $msg = "encountered a type mismatch in sequence: {$ta}, {$tb}";
              $this->typeError($from, $msg);
          }
  
          $typeMatch = ($types && $types[0] == 'any') || in_array($ta, $types);
          if (!$typeMatch) {
              $msg = 'encountered a type error in sequence. The argument must be '
                  . 'an array of ' . implode('|', $types) . ' types. '
                  . "Found {$ta}, {$tb}.";
              $this->typeError($from, $msg);
          }
      }
docs: Validates value A and B, ensures they both are correctly typed, and of
  the same type.
  
  @param string   $from   String of function:argument_position
  @param array    $types  Array of valid value types.
  @param mixed    $a      Value A
  @param mixed    $b      Value B