code: @Override
      Map<String, Object> constructParameterRequestArgs() {
          // The label needs to be the key and this object is the value. Unfortunately that means
          // whatever parent object calls this needs to know to use this label as the key.
          // We could fix this by changing RequestParameter's interface to take the outer Map<> as a
          // parameter, and then each RequestParameter would know whether to add a Map<> or a
          // Collection<> or just add a (K, V).
          Map<String, Object> subAnalysisInfo = new HashMap<String, Object>(4);
  
          subAnalysisInfo.put(KeenQueryConstants.ANALYSIS_TYPE, this.analysisType.toString());
  
          if (QueryType.COUNT != this.analysisType) {
              subAnalysisInfo.put(KeenQueryConstants.TARGET_PROPERTY, this.targetPropertyName);
          }
  
          if (QueryType.PERCENTILE == analysisType) {
              // Put the raw Double in here for JSON serialization for now
              subAnalysisInfo.put(KeenQueryConstants.PERCENTILE, this.percentile.asDouble());
          }
  
          return subAnalysisInfo;
      }
docs: Constructs request sub-parameters for this SubAnalysis.
  
  {@inheritDoc}
  
  @return A jsonifiable object that should be the value for a key with the name of the label
  of this SubAnalysis instance.