code: protected boolean definePropertyBeanMethods(ClassFile cf,
                                                  SyntheticProperty property)
      {
          TypeDesc propertyType = TypeDesc.forClass(property.getType());
          // Add property get method.
          final MethodInfo mi = cf.addMethod(Modifiers.PUBLIC_ABSTRACT,
                                             property.getReadMethodName(),
                                             propertyType,
                                             null);
  
          if (property.getName() != null) {
              // Define @Name
              Annotation ann = mi.addRuntimeVisibleAnnotation(TypeDesc.forClass(Name.class));
              ann.putMemberValue("value", property.getName());
          }
  
          if (property.isNullable()) {
              mi.addRuntimeVisibleAnnotation(TypeDesc.forClass(Nullable.class));
          }
          boolean versioned = false;
          if (property.isVersion()) {
              mi.addRuntimeVisibleAnnotation(TypeDesc.forClass(Version.class));
              versioned = true;
          }
  
          if (property.getAdapter() != null) {
              StorablePropertyAdapter adapter = property.getAdapter();
              Annotation ann = mi.addRuntimeVisibleAnnotation
                  (TypeDesc.forClass(adapter.getAnnotation().getAnnotationType()));
              java.lang.annotation.Annotation jann = adapter.getAnnotation().getAnnotation();
              if (jann != null) {
                  new AnnotationBuilder().visit(jann, ann);
              }
          }
  
          List<String> annotationDescs = property.getAccessorAnnotationDescriptors();
          if (annotationDescs != null && annotationDescs.size() > 0) {
              for (String desc : annotationDescs) {
                  new AnnotationDescParser(desc) {
                      @Override
                      protected Annotation buildRootAnnotation(TypeDesc rootAnnotationType) {
                          return mi.addRuntimeVisibleAnnotation(rootAnnotationType);
                      }
                  }.parse(null);
              }
          }
  
          // Add property set method.
          cf.addMethod(Modifiers.PUBLIC_ABSTRACT,
                       property.getWriteMethodName(),
                       null,
                       new TypeDesc[] { propertyType });
  
          return versioned;
      }
docs: Add the get & set methods for this property
  
  @return true if version property was added