code: private void scrubAnnotationConstructors(IType declaringClass, List<IConstructorType> listConstructorTypes) {
      if( declaringClass instanceof IGosuClass ) {
        // We only include one ctor for an annotation implemented in Gosu, so let it be called with or without named args
        return;
      }
      if (JavaTypes.ANNOTATION().isAssignableFrom(declaringClass)) {
        if (match(null, ":", ISourceCodeTokenizer.TT_OPERATOR, true)) {
  
          // Arg[s] are named, so only include the one ctor with default params (this is the new/conventional way)
  
          Iterator<IConstructorType> iter = listConstructorTypes.iterator();
          while (iter.hasNext()) {
            IConstructorType next = iter.next();
            IConstructorInfo constructor = next.getConstructor();
            if ( !(constructor instanceof ConstructorInfoBuilder.IBuilt &&
                   ((ConstructorInfoBuilder.IBuilt)constructor).getUserData() == AnnotationConstructorGenerator.STANDARD_CTOR_WITH_DEFAULT_PARAM_VALUES) ) {
              // Remove all but the one standard ctor
              iter.remove();
            }
          }
        } else {
  
          // Arg[s] are not named, only include "legacy" constructors to support old-style ordered arg passing (this is effectively deprecated)
  
          Iterator<IConstructorType> iter = listConstructorTypes.iterator();
          while (iter.hasNext()) {
            IConstructorType next = iter.next();
            IConstructorInfo constructor = next.getConstructor();
            if ( constructor instanceof ConstructorInfoBuilder.IBuilt &&
                 ((ConstructorInfoBuilder.IBuilt)constructor).getUserData() == AnnotationConstructorGenerator.STANDARD_CTOR_WITH_DEFAULT_PARAM_VALUES ) {
              // Remove the standard ctor
              iter.remove();
              break;
            }
          }
        }
      }
    }
docs: ## todo: remove this after removal of old-style Gosu "annotations" when there will only be a single ctor