code: public function assertValid()
      {
          $errors = $this->validate();
  
          if ($errors) {
              throw new InvariantViolation(implode("\n\n", $this->validationErrors));
          }
  
          $internalTypes = Type::getStandardTypes() + Introspection::getTypes();
          foreach ($this->getTypeMap() as $name => $type) {
              if (isset($internalTypes[$name])) {
                  continue;
              }
  
              $type->assertValid();
  
              // Make sure type loader returns the same instance as registered in other places of schema
              if (! $this->config->typeLoader) {
                  continue;
              }
  
              Utils::invariant(
                  $this->loadType($name) === $type,
                  sprintf(
                      'Type loader returns different instance for %s than field/argument definitions. Make sure you always return the same instance for the same type name.',
                      $name
                  )
              );
          }
      }
docs: Validates schema.
  
  This operation requires full schema scan. Do not use in production environment.
  
  @throws InvariantViolation
  
  @api