code: public <T> DynamicType.Builder<T> decorate(TypeDescription type, ClassFileLocator classFileLocator) {
          if (type.isArray() || type.isPrimitive()) {
              throw new IllegalArgumentException("Cannot decorate array or primitive type: " + type);
          }
          return new DecoratingDynamicTypeBuilder<T>(type,
                  classFileVersion,
                  auxiliaryTypeNamingStrategy,
                  annotationValueFilterFactory,
                  annotationRetention,
                  implementationContextFactory,
                  methodGraphCompiler,
                  typeValidation,
                  classWriterStrategy,
                  ignoredMethods,
                  classFileLocator);
      }
docs: <p>
  Decorates a type with {@link net.bytebuddy.asm.AsmVisitorWrapper} and allows adding attributes and annotations. A decoration does
  not allow for any standard transformations but can be used as a performance optimization compared to a redefinition, especially
  when implementing a Java agent that only applies ASM-based code changes.
  </p>
  <p>
  <b>Important</b>: Only use this mode to improve performance in a narrowly defined transformation. Using other features as those mentioned
  might result in an unexpected outcome of the transformation or error. Using decoration also requires the configuration of an
  {@link Implementation.Context.Factory} that does not attempt any type transformation.
  </p>
  
  @param type             The type to decorate.
  @param classFileLocator The class file locator to use.
  @param <T>              The loaded type of the decorated type.
  @return A type builder for decorating the provided type.