docs: private MethodInfoList getMethodInfo(final String methodName, final boolean getNormalMethods,
              final boolean getConstructorMethods, final boolean getStaticInitializerMethods) {
          if (!scanResult.scanSpec.enableMethodInfo) {
              throw new IllegalArgumentException("Please call ClassGraph#enableMethodInfo() before #scan()");
          }
          // Implement method/constructor overriding
          final MethodInfoList methodInfoList = new MethodInfoList();
          final Set<Entry<String, String>> nameAndTypeDescriptorSet = new HashSet<>();
          for (final ClassInfo ci : getOverrideOrder()) {
              for (final MethodInfo mi : ci.getDeclaredMethodInfo(methodName, getNormalMethods, getConstructorMethods,
                      getStaticInitializerMethods)) {
                  // If method/constructor has not been overridden by method of same name and type descriptor 
                  if (nameAndTypeDescriptorSet
                          .add(new SimpleEntry<>(mi.getName(), mi.getTypeDescriptor().toString()))) {
                      // Add method/constructor to output order
                      methodInfoList.add(mi);
                  }
              }
          }
          return methodInfoList;
      }