code: @PublicAPI(usage = ACCESS)
      public Optional<Object> get(String property) {
          return Optional.fromNullable(values.get(property));
      }
docs: Returns the value of the property with the given name, i.e. the result of the method with the property name
  of the represented {@link java.lang.annotation.Annotation}. E.g. for
  <pre><code>      {@literal @}SomeAnnotation(value = "someString", types = {SomeType.class, AnotherType.class})
  class SomeAnnotatedClass {}
  </code></pre>
  the results will be
  <pre><code>       someAnnotation.get("value") --&gt; "someString"
  someAnnotation.get("types") --&gt; [JavaClass{SomeType}, JavaClass{AnotherType}]
  </code></pre>
  
  @param property The name of the annotation property, i.e. the declared method name
  @return the value of the given property, where the result type is more precisely
  <ul>
  <li>Class&lt;?&gt; --&gt; TypeDetails{clazz}</li>
  <li>Class&lt;?&gt;[] --&gt; [TypeDetails{clazz},...]</li>
  <li>Enum --&gt; JavaEnumConstant</li>
  <li>Enum[] --&gt; [JavaEnumConstant,...]</li>
  <li>anyOtherType --&gt; anyOtherType</li>
  </ul>