docs: public static List<JCAnnotation> findCopyableAnnotations(JavacNode node) {
  		JCAnnotation anno = null;
  		String annoName = null;
  		for (JavacNode child : node.down()) {
  			if (child.getKind() == Kind.ANNOTATION) {
  				if (anno != null) {
  					annoName = "";
  					break;
  				}
  				JCAnnotation annotation = (JCAnnotation) child.get();
  				annoName = annotation.annotationType.toString();
  				anno = annotation;
  			}
  		}
  		
  		if (annoName == null) return List.nil();
  		
  		java.util.List<TypeName> configuredCopyable = node.getAst().readConfiguration(ConfigurationKeys.COPYABLE_ANNOTATIONS);
  		
  		if (!annoName.isEmpty()) {
  			for (TypeName cn : configuredCopyable) if (typeMatches(cn.toString(), node, anno.annotationType)) return List.of(anno);
  			for (String bn : BASE_COPYABLE_ANNOTATIONS) if (typeMatches(bn, node, anno.annotationType)) return List.of(anno);
  		}
  		
  		ListBuffer<JCAnnotation> result = new ListBuffer<JCAnnotation>();
  		for (JavacNode child : node.down()) {
  			if (child.getKind() == Kind.ANNOTATION) {
  				JCAnnotation annotation = (JCAnnotation) child.get();
  				boolean match = false;
  				for (TypeName cn : configuredCopyable) if (typeMatches(cn.toString(), node, annotation.annotationType)) {
  					result.append(annotation);
  					match = true;
  					break;
  				}
  				if (!match) for (String bn : BASE_COPYABLE_ANNOTATIONS) if (typeMatches(bn, node, annotation.annotationType)) {
  					result.append(annotation);
  					break;
  				}
  			}
  		}
  		return result.toList();
  	}