code: private void checkForClassNameConflict(String className, DataSchema schema)
        throws IllegalArgumentException
    {
      final DataSchema schemaFromClassName = _classNameToSchemaMap.get(className);
      boolean conflict = false;
      if (schemaFromClassName != null && schemaFromClassName != schema)
      {
        final DataSchema.Type schemaType = schema.getType();
        if (schemaFromClassName.getType() != schemaType)
        {
          conflict = true;
        }
        else if (schema instanceof NamedDataSchema)
        {
          conflict = true;
        }
        else if (!schemaFromClassName.equals(schema))
        {
          assert schemaType == DataSchema.Type.ARRAY || schemaType == DataSchema.Type.MAP;
          //
          // see schemaForArrayItemsOrMapValues
          //
          // When the schema bound to the specified class name is different
          // from the specified schema, then emit a log message when this occurs.
          //
          _log.debug("Class name: " + className +
              ", bound to schema:" + schemaFromClassName +
              ", instead of schema: " + schema);
        }
      }
      if (conflict)
      {
        throw new IllegalArgumentException("Class name conflict detected, class name: " + className +
            ", class already bound to schema: " + schemaFromClassName +
            ", attempting to rebind to schema: " + schema);
      }
    }
docs: Checks if a class name conflict occurs, if it occurs throws {@link IllegalArgumentException}.
  
  @param className provides the Java class name.
  @param schema    provides the {@link com.linkedin.data.schema.DataSchema} that would be bound if there is no conflict.
  
  @throws IllegalArgumentException