code: @Override
      public final String toCanonicalForm() {
  
          final StringBuilder sb = new StringBuilder(super.toCanonicalForm());
          if (version == null || version.length() == 0) {
              return sb.toString();
          }
          if (classifier != null && classifier.length() > 0 && packaging != null) {
              sb.append(SEPARATOR_COORDINATE).append(packaging.getId()).append(SEPARATOR_COORDINATE)
                      .append(classifier).append(SEPARATOR_COORDINATE).append(version);
          }
          if ((classifier == null || classifier.length() == 0) && packaging != null) {
              sb.append(SEPARATOR_COORDINATE).append(packaging.getId()).append(SEPARATOR_COORDINATE).append(version);
          }
  
          return sb.toString();
      }
docs: Valid forms: <code>groupId:artifactId:packaging:classifier:version</code>
  <code>groupId:artifactId:packaging:version</code> <code>groupId:artifactId:version</code> <code>groupId:artifactId</code>