code: private static void generateClassMethods(ClassWriter classWriter, String className, String apiName) {
          generateClassMethods(classWriter, className, className, apiName, true);
      }
docs: Creates some class specific methods that all implementations of {@link XsdAbstractElement} should have, which are:
  Constructor(ElementVisitor visitor) - Assigns the argument to the visitor field;
  Constructor(Element parent)         - Assigns the argument to the parent field and obtains the visitor of the parent;
  Constructor(Element parent, ElementVisitor visitor, boolean performsVisit) -
  An alternative constructor to avoid the visit method call;
  of({@link Consumer} consumer)       - Method used to avoid variable extraction in order to allow cleaner code;
  dynamic({@link Consumer} consumer)  - Method used to indicate that the changes on the fluent interface performed
  inside the Consumer code are a dynamic aspect of the result and are bound to change;
  self()                              - Returns this;
  getName()                           - Returns the name of the element;
  getParent()                         - Returns the parent field;
  getVisitor()                        - Returns the visitor field;
  __()                                - Returns the parent and calls the respective visitParent method.
  @param classWriter The {@link ClassWriter} on which the methods should be written.
  @param className The class name.
  @param apiName The name of the generated fluent interface.