code: protected function checkValue(
          $value,
          /*# string */ $subject,
          /*# string */ $reference
      ) {
          // unknown reference found, leave it alone
          if (is_null($value)) {
              // exception thrown in resolveUnknown() already if wanted to
              return $subject;
  
          // malformed partial match, partial string, partial non-scalar
          } elseif ($subject != $reference) {
              throw new RuntimeException(
                  Message::get(Message::MSG_REF_MALFORMED, $reference),
                  Message::MSG_REF_MALFORMED
              );
  
          // full match, array or object
          } else {
              return $value;
          }
      }
docs: Check dereferenced value
  
  @param  mixed $value
  @param  string $subject the subject to dereference
  @param  string $reference the matched whole reference
  @return mixed
  @throws RuntimeException if $subject malformed, like mix string & array
  @access protected