code: @Override
      public Object getProperty(String propertyName) {
          // look for getXXXXClasses
          final Matcher match = GETCLASSESPROP_PATTERN.matcher(propertyName);
          // find match
          match.find();
          if (match.matches()) {
              String artefactName = GrailsNameUtils.getClassNameRepresentation(match.group(1));
              if (artefactHandlersByName.containsKey(artefactName)) {
                  return getArtefacts(artefactName);
              }
          }
          return super.getProperty(propertyName);
      }
docs: Override property access and hit on xxxxClasses to return class arrays of artefacts.
  
  @param propertyName The name of the property, if it ends in *Classes then match and invoke internal ArtefactHandler
  @return All the artifacts or delegate to super.getProperty