@startuml
class Name {
    - String name
    + String toString()
}

note right of Name::name
       This cannot be <b>null</b>, <b>empty</b>, or <b>only whitespace</b>
end note

abstract class java.lang.Number <<built in to JDK>> {
   + byte byteValue()
   + short shortValue()
   + int intValue()
   + long longValue()
   + float floatValue()
   + double doubleValue()
}

interface java.lang.Comparable<NaturalNumber> {
   + int compareTo(NaturalNumber o)
}

NaturalNumber <|-- Number
NaturalNumber <|-- Comparable
class NaturalNumber {
   - int number
   + boolean equals(Number other)
   + int hashCode()
   + String toString()
}

note right of NaturalNumber::number
      This number cannot be negative
end note


namespace me.nicholasvaidyanathan.waggr.api {
   class Name
   class NaturalNumber
}
@enduml