public static List<IExceptionInfo> evalThrowsInfos(IAnnotatedFeatureInfo typeInfo) {
   ArrayList<IExceptionInfo> lst = new ArrayList<IExceptionInfo>();
   for (IAnnotationInfo aThrows : evalThrows(typeInfo)) {
     lst.add(
         new SyntheticExceptionInfo(
             typeInfo,
             ((IType) aThrows.getFieldValue("ExceptionType")).getName(),
             (String) aThrows.getFieldValue("ExceptionDescription")));
   }
   return lst;
 }
 public static String evalParameterDecription(IParameterInfo parameterData) {
   // replicates logic in gw.internal.gosu.parser.GosuMethodParamInfo._description
   if (parameterData instanceof IGosuMethodParamInfo) {
     IFeatureInfo featureInfo = parameterData.getContainer();
     IAttributedFeatureInfo annotatedFI = (IAttributedFeatureInfo) featureInfo;
     List<IAnnotationInfo> annotation = annotatedFI.getAnnotationsOfType(JavaTypes.PARAM());
     for (IAnnotationInfo o : annotation) {
       if (o != null && o.getFieldValue("FieldName").equals(parameterData.getName())) {
         return (String) o.getFieldValue("FieldDescription");
       }
     }
     return "";
   } else {
     return parameterData.getDescription();
   }
 }
 public static String evalDeprecationReason(IAnnotatedFeatureInfo featureInfo) {
   if (isGosuFeature(featureInfo)) {
     String deprecatedReason = "";
     List<IAnnotationInfo> annotation =
         featureInfo.getAnnotationsOfType(JavaTypes.GW_LANG_DEPRECATED());
     if (annotation.size() > 0) {
       try {
         IAnnotationInfo annotationInfo = annotation.get(0);
         if (annotationInfo != null) {
           deprecatedReason = (String) annotationInfo.getFieldValue("value");
         }
       } catch (Exception e) {
         // ignore
       }
     }
     return deprecatedReason;
   } else {
     return featureInfo.getDeprecatedReason();
   }
 }