code: protected String getPreparedStatementText(ControlBeanContext context, Method m, Object[] args) {
  
          StringBuilder sb = new StringBuilder();
          for (SqlFragment frag : _children) {
  
              boolean complexFragment = frag.hasComplexValue(context, m, args);
              if (frag.hasParamValue() && !complexFragment) {
                  Object[] pValues = frag.getParameterValues(context, m, args);
                  for (Object o : pValues) {
                      sb.append(processSqlParams(o));
                  }
              } else {
                  _hasParamValue |= complexFragment;
                  sb.append(frag.getPreparedStatementText(context, m, args));
              }
          }
          return sb.toString();
      }
docs: Return the text for a PreparedStatement from this fragment. This type of fragment
  typically evaluates any reflection parameters at this point.  The exception
  is if the reflected result is a ComplexSqlFragment, it that case the sql text
  is retrieved from the fragment in this method.  The parameter values are
  retrieved in the getParameterValues method of this class.
  
  @param context A ControlBeanContext instance
  @param m The annotated method
  @param args The method parameters
  @return A String containing the value of this fragment and its children