docs: private boolean classifyMethodOneArg(ExecutableElement method) {
      String methodName = method.getSimpleName().toString();
      Map<String, ExecutableElement> propertyNameToGetter = getterToPropertyName.inverse();
      String propertyName = null;
      ExecutableElement valueGetter = propertyNameToGetter.get(methodName);
      Multimap<String, ExecutableElement> propertyNameToSetters = null;
      if (valueGetter != null) {
        propertyNameToSetters = propertyNameToUnprefixedSetters;
        propertyName = methodName;
      } else if (valueGetter == null && methodName.startsWith("set") && methodName.length() > 3) {
        propertyNameToSetters = propertyNameToPrefixedSetters;
        propertyName = PropertyNames.decapitalizeLikeJavaBeans(methodName.substring(3));
        valueGetter = propertyNameToGetter.get(propertyName);
        if (valueGetter == null) {
          // If our property is defined by a getter called getOAuth() then it is called "OAuth"
          // because of Introspector.decapitalize. Therefore we want Introspector.decapitalize to
          // be used for the setter too, so that you can write setOAuth(x). Meanwhile if the property
          // is defined by a getter called oAuth() then it is called "oAuth", but you would still
          // expect to be able to set it using setOAuth(x). Hence the second try using a decapitalize
          // method without the quirky two-leading-capitals rule.
          propertyName = PropertyNames.decapitalizeNormally(methodName.substring(3));
          valueGetter = propertyNameToGetter.get(propertyName);
        }
      }
      if (valueGetter == null || propertyNameToSetters == null) {
        // The second disjunct isn't needed but convinces control-flow checkers that
        // propertyNameToSetters can't be null when we call put on it below.
        errorReporter.reportError(
            "Method does not correspond to a property of " + autoValueClass, method);
        checkForFailedJavaBean(method);
        return false;
      }
      if (!checkSetterParameter(valueGetter, method)) {
        return false;
      } else if (!TYPE_EQUIVALENCE.equivalent(
          builderMethodReturnType(method), builderType.asType())) {
        errorReporter.reportError(
            "Setter methods must return " + builderType + typeParamsString(), method);
        return false;
      } else {
        propertyNameToSetters.put(propertyName, method);
        return true;
      }
    }