static public void registerConvention(String conventionName, Class c, ConventionNameOk match) {
    """
	Register a class that implements a Convention.
	
	@param conventionName name of Convention.
	This name will be used to look in the "Conventions" global attribute.
	Otherwise, you must implement the isMine() static method.
	@param match          pass in your own matcher. if null, equalsIgnoreCase() will be used.
	@param c              implementation of CoordSysBuilderIF that parses those kinds of netcdf files.
    """

    if (!(CoordSysBuilderIF.class.isAssignableFrom(c)))
      throw new IllegalArgumentException("CoordSysBuilderIF Class " + c.getName() + " must implement CoordSysBuilderIF");

    // fail fast - check newInstance works
    try {
      c.newInstance();
    } catch (InstantiationException e) {
      throw new IllegalArgumentException("CoordSysBuilderIF Class " + c.getName() + " cannot instantiate, probably need default Constructor");
    } catch (IllegalAccessException e) {
      throw new IllegalArgumentException("CoordSysBuilderIF Class " + c.getName() + " is not accessible");
    }

    // user stuff gets put at top
    if (userMode)
      conventionList.add(0, new Convention(conventionName, c, match));
    else
      conventionList.add(new Convention(conventionName, c, match));
  }
static public void registerConvention(String conventionName, Class c, ConventionNameOk match) {

    if (!(CoordSysBuilderIF.class.isAssignableFrom(c)))
      throw new IllegalArgumentException("CoordSysBuilderIF Class " + c.getName() + " must implement CoordSysBuilderIF");

    // fail fast - check newInstance works
    try {
      c.newInstance();
    } catch (InstantiationException e) {
      throw new IllegalArgumentException("CoordSysBuilderIF Class " + c.getName() + " cannot instantiate, probably need default Constructor");
    } catch (IllegalAccessException e) {
      throw new IllegalArgumentException("CoordSysBuilderIF Class " + c.getName() + " is not accessible");
    }

    // user stuff gets put at top
    if (userMode)
      conventionList.add(0, new Convention(conventionName, c, match));
    else
      conventionList.add(new Convention(conventionName, c, match));
  }
static public void registerConvention ( String conventionName , Class c , ConventionNameOk match ) { if ( ! ( CoordSysBuilderIF . class . isAssignableFrom ( c ) ) ) throw new IllegalArgumentException ( "CoordSysBuilderIF Class " + c . getName ( ) + " must implement CoordSysBuilderIF" ) ; // fail fast - check newInstance works
 try { c . newInstance ( ) ; } catch ( InstantiationException e ) { throw new IllegalArgumentException ( "CoordSysBuilderIF Class " + c . getName ( ) + " cannot instantiate, probably need default Constructor" ) ; } catch ( IllegalAccessException e ) { throw new IllegalArgumentException ( "CoordSysBuilderIF Class " + c . getName ( ) + " is not accessible" ) ; } // user stuff gets put at top
 if ( userMode ) conventionList . add ( 0 , new Convention ( conventionName , c , match ) ) ; else conventionList . add ( new Convention ( conventionName , c , match ) ) ; }
Register a class that implements a Convention.

@param conventionName name of Convention.
This name will be used to look in the "Conventions" global attribute.
Otherwise, you must implement the isMine() static method.
@param match          pass in your own matcher. if null, equalsIgnoreCase() will be used.
@param c              implementation of CoordSysBuilderIF that parses those kinds of netcdf files.
Register a class that implements a Convention .