code: protected void overridePublicMethods(MethodBodyCreator override) {
          Class<?> c = getSuperClass();
          while (c != null) {
              ClassMetadataSource data = reflectionMetadataSource.getClassMetadata(c);
  
              for (Method method : data.getDeclaredMethods()) {
                  MethodIdentifier identifier = MethodIdentifier.getIdentifierForMethod(method);
                  if (!Modifier.isPublic(method.getModifiers()) || Modifier.isFinal(method.getModifiers())) {
                      continue;
                  }
                  if (!SKIP_BY_DEFAULT.contains(identifier)) {
                      overrideMethod(method, identifier, override);
                  }
              }
              c = c.getSuperclass();
          }
      }
docs: Overrides all public methods on the superclass. The given {@link MethodBodyCreator} is used to generate the class body.
  <p/>
  NOTE: This will not override <code>equals(Object)</code>, <code>hashCode()</code>, <code>finalize()</code> and
  <code>toString()</code>, these should be overridden separately using {@link #overrideEquals(MethodBodyCreator)}
  {@link #overrideHashcode(MethodBodyCreator)},{@link #overrideToString(MethodBodyCreator)} and
  {@link #overrideFinalize(MethodBodyCreator)}
  
  @param override the method body creator to use