code: private static Set<QMethod> buildMethodSet(JavaClass cls) {
          Set<QMethod> methods = new HashSet<>();
  
          boolean isInterface = cls.isInterface();
  
          for (Method m : cls.getMethods()) {
              boolean isDefaultInterfaceMethod = isInterface && !m.isAbstract();
  
              boolean isSyntheticForParentCall;
  
              if (m.isSynthetic()) {
                  BitSet bytecodeSet = ClassContext.getBytecodeSet(cls, m);
                  isSyntheticForParentCall = (bytecodeSet != null) && bytecodeSet.get(Const.INVOKESPECIAL);
              } else {
                  isSyntheticForParentCall = false;
              }
  
              if (!isSyntheticForParentCall && !isDefaultInterfaceMethod) {
                  String methodName = m.getName();
                  QMethod methodInfo = new QMethod(methodName, m.getSignature());
  
                  if (!OBJECT_METHODS.contains(methodInfo)) {
                      if (!Values.CONSTRUCTOR.equals(methodName) && !Values.STATIC_INITIALIZER.equals(methodName)) {
                          methods.add(methodInfo);
                      }
                  }
              }
          }
  
          return methods;
      }
docs: builds a set of all non constructor or static initializer method/signatures
  
  @param cls
  the class to build the method set from
  @return a set of method names/signatures