code: private function varTypeAllowedForType($varType, $expectedType)
      {
          if ($expectedType instanceof NonNull) {
              if ($varType instanceof NonNull) {
                  return $this->varTypeAllowedForType($varType->getWrappedType(), $expectedType->getWrappedType());
              }
  
              return false;
          }
          if ($varType instanceof NonNull) {
              return $this->varTypeAllowedForType($varType->getWrappedType(), $expectedType);
          }
          if ($varType instanceof ListOfType && $expectedType instanceof ListOfType) {
              return $this->varTypeAllowedForType($varType->getWrappedType(), $expectedType->getWrappedType());
          }
  
          return $varType === $expectedType;
      }
docs: If a variable definition has a default value, it's effectively non-null.