code: public GrailsClass newArtefactClass(@SuppressWarnings("rawtypes") Class artefactClass) {
          try {
              Constructor<?> c = grailsClassImpl.getDeclaredConstructor(new Class[] { Class.class });
              // TODO GRAILS-720 plugin class instance created here first
              return (GrailsClass) c.newInstance(new Object[] { artefactClass});
          }
          catch (NoSuchMethodException e) {
              throw new GrailsRuntimeException("Unable to locate constructor with Class parameter for "+artefactClass, e);
          }
          catch (IllegalAccessException e) {
              throw new GrailsRuntimeException("Unable to locate constructor with Class parameter for "+artefactClass, e);
          }
          catch (InvocationTargetException e) {
              throw new GrailsRuntimeException("Error instantiated artefact class [" + artefactClass + "] of type ["+grailsClassImpl+"]: " + (e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()), e);
          }
          catch (InstantiationException e) {
              throw new GrailsRuntimeException("Error instantiated artefact class [" + artefactClass + "] of type ["+grailsClassImpl+"]: " + (e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()), e);
          }
      }
docs: <p>Creates new GrailsClass derived object using the type supplied in constructor. May not perform
  optimally but is a convenience.</p>
  @param artefactClass Creates a new artefact for the given class
  @return An instance of the GrailsClass interface representing the artefact