### Question:
SpecificationItemId implements Comparable<SpecificationItemId> { public static SpecificationItemId parseId(final String idText) { return new Builder(idText).build(); } protected  SpecificationItemId(final String name, final String artifactType, final int revision); String getName(); int getRevision(); String getArtifactType(); @Override @Generated(value = "org.eclipse.Eclipse") final int hashCode(); @Override @Generated(value = "org.eclipse.Eclipse") final boolean equals(final Object obj); @Override String toString(); SpecificationItemId toRevisionWildcard(); static SpecificationItemId parseId(final String idText); static SpecificationItemId createId(final String artifactType, final String name,
            final int revision); static SpecificationItemId createId(final String artifactType, final String name); @Override int compareTo(final SpecificationItemId other); static final String UNKNOWN_ARTIFACT_TYPE; static final String ITEM_REVISION_PATTERN; static final String ITEM_NAME_PATTERN; static final String ARTIFACT_TYPE_SEPARATOR; static final String REVISION_SEPARATOR; static final int REVISION_WILDCARD; static final Pattern ID_PATTERN; static final Pattern LEGACY_NAME_PATTERN; static final Pattern LEGACY_ID_PATTERN; }### Answer:
@Test void testParseId_IllegalNumberFormat() { assertThrows(IllegalArgumentException.class, () -> parseId("feat~foo~999999999999999999999999999999999999999")); }
@Test void testParseIdFailsForWildcardRevision() { assertThrows(IllegalStateException.class, () -> parseId("feat~foo~" + SpecificationItemId.REVISION_WILDCARD)); }