code: @Nonnull
    public String getAsString (final boolean bPrintZeroElements, final boolean bPrintAtLeastMajorAndMinor)
    {
      // Build from back to front
      final StringBuilder aSB = new StringBuilder (m_sQualifier != null ? m_sQualifier : "");
      if (m_nMicro > 0 || aSB.length () > 0 || bPrintZeroElements)
      {
        // Micro version
        if (aSB.length () > 0)
          aSB.insert (0, '.');
        aSB.insert (0, m_nMicro);
      }
      if (bPrintAtLeastMajorAndMinor || m_nMinor > 0 || aSB.length () > 0 || bPrintZeroElements)
      {
        // Minor version
        if (aSB.length () > 0)
          aSB.insert (0, '.');
        aSB.insert (0, m_nMinor);
      }
      if (bPrintAtLeastMajorAndMinor || m_nMajor > 0 || aSB.length () > 0 || bPrintZeroElements)
      {
        // Major version
        if (aSB.length () > 0)
          aSB.insert (0, '.');
        aSB.insert (0, m_nMajor);
      }
      return aSB.length () > 0 ? aSB.toString () : DEFAULT_VERSION_STRING;
    }
docs: Get the string representation of the version number.
  
  @param bPrintZeroElements
  If <code>true</code> than trailing zeroes are printed, otherwise
  printed zeroes are not printed.
  @param bPrintAtLeastMajorAndMinor
  <code>true</code> if major and minor part should always be printed,
  independent of their value
  @return Never <code>null</code>.