code: public static List<FieldMetadata> getFieldMetadata(Schema schema) {
      List<Field> superclassFields = Arrays.asList(Weaver.getWovenFields(schema.getClass().getSuperclass()));
  
      List<FieldMetadata> fields = new ArrayList<>();
      // Fields up to but not including Schema
      for (Field field : Weaver.getWovenFields(schema.getClass())) {
        FieldMetadata fmd = FieldMetadata.createIfApiAnnotation(schema, field, superclassFields);
        if (null != fmd) // skip transient or other non-annotated fields
          fields.add(fmd);  // NOTE: we include non-JSON fields here; remove them later if we don't want them
      }
      return fields;
    }
docs: Returns metadata of all annotated fields.
  
  @param schema a schema instance
  @return list of field metadata