docs: public Size apply(MethodVisitor methodVisitor, Context implementationContext, MethodDescription instrumentedMethod) {
              if (instrumentedMethod.isStatic()) {
                  throw new IllegalStateException("toString method must not be static: " + instrumentedMethod);
              } else if (!instrumentedMethod.getReturnType().asErasure().isAssignableFrom(String.class)) {
                  throw new IllegalStateException("toString method does not return String-compatible type: " + instrumentedMethod);
              }
              List<StackManipulation> stackManipulations = new ArrayList<StackManipulation>(Math.max(0, fieldDescriptions.size() * 7 - 2) + 10);
              stackManipulations.add(TypeCreation.of(TypeDescription.ForLoadedType.of(StringBuilder.class)));
              stackManipulations.add(Duplication.SINGLE);
              stackManipulations.add(new TextConstant(prefix));
              stackManipulations.add(MethodInvocation.invoke(STRING_BUILDER_CONSTRUCTOR));
              stackManipulations.add(new TextConstant(start));
              stackManipulations.add(ValueConsumer.STRING);
              boolean first = true;
              for (FieldDescription.InDefinedShape fieldDescription : fieldDescriptions) {
                  if (first) {
                      first = false;
                  } else {
                      stackManipulations.add(new TextConstant(separator));
                      stackManipulations.add(ValueConsumer.STRING);
                  }
                  stackManipulations.add(new TextConstant(fieldDescription.getName() + definer));
                  stackManipulations.add(ValueConsumer.STRING);
                  stackManipulations.add(MethodVariableAccess.loadThis());
                  stackManipulations.add(FieldAccess.forField(fieldDescription).read());
                  stackManipulations.add(ValueConsumer.of(fieldDescription.getType().asErasure()));
              }
              stackManipulations.add(new TextConstant(end));
              stackManipulations.add(ValueConsumer.STRING);
              stackManipulations.add(MethodInvocation.invoke(TO_STRING));
              stackManipulations.add(MethodReturn.REFERENCE);
              return new Size(new StackManipulation.Compound(stackManipulations).apply(methodVisitor, implementationContext).getMaximalSize(), instrumentedMethod.getStackSize());
          }