code: private function makeSchemaDefFromConfig($def, array $config)
      {
          if (! $def) {
              throw new Error('def must be defined.');
          }
          switch ($def->kind) {
              case NodeKind::OBJECT_TYPE_DEFINITION:
                  return new ObjectType($config);
              case NodeKind::INTERFACE_TYPE_DEFINITION:
                  return new InterfaceType($config);
              case NodeKind::ENUM_TYPE_DEFINITION:
                  return new EnumType($config);
              case NodeKind::UNION_TYPE_DEFINITION:
                  return new UnionType($config);
              case NodeKind::SCALAR_TYPE_DEFINITION:
                  return new CustomScalarType($config);
              case NodeKind::INPUT_OBJECT_TYPE_DEFINITION:
                  return new InputObjectType($config);
              default:
                  throw new Error(sprintf('Type kind of %s not supported.', $def->kind));
          }
      }
docs: @param ObjectTypeDefinitionNode|InterfaceTypeDefinitionNode|EnumTypeExtensionNode|ScalarTypeDefinitionNode|InputObjectTypeDefinitionNode $def
  @param mixed[]                                                                                                                           $config
  
  @return CustomScalarType|EnumType|InputObjectType|InterfaceType|ObjectType|UnionType
  
  @throws Error