code: private Map<String, Object> handleArgDefine(final String arg, final Deque<String> args) {
          /*
           * Interestingly enough, we get to here when a user uses -Dname=value.
           * However, in some cases, the OS goes ahead and parses this out to args
           * {"-Dname", "value"} so instead of parsing on "=", we just make the
           * "-D" characters go away and skip one argument forward.
           *
           * I don't know how to predict when the JDK is going to help or not, so
           * we simply look for the equals sign.
           */
          final Map.Entry<String, String> entry = parse(arg.substring(2), args);
          if (entry.getValue() == null) {
              throw new BuildException("Missing value for property " + entry.getKey());
          }
  
          if (RESERVED_PROPERTIES.containsKey(entry.getKey())) {
              throw new BuildException("Property " + entry.getKey() + " cannot be set with -D, use " + RESERVED_PROPERTIES.get(entry.getKey()) + " instead");
          }
          return ImmutableMap.of(entry.getKey(), entry.getValue());
      }
docs: Handler -D argument