mLogger.error
mContext.getLogger().error
  private void populateArrayMember(MAnnotation dest,                                   String memberName,                                   Type returnType,                                   AnnotationValue[] annValueArray,                                   SourcePosition sp)  {    if (sp != null) JavadocClassBuilder.addSourcePosition(dest,sp);    if (annValueArray.length == 0) {      Object[] value = new Object[0];      //FIXME this is a little bit busted - we should try to give them      //more type information than this.  it's just a little bit harder      //to figure it out from the javadoc objects      dest.setSimpleValue(memberName,value,loadClass(returnType));      return;    }    // unpack the AnnotationValue values into a single array.    Object[] valueArray = new Object[annValueArray.length];    for(int i=0; i<valueArray.length; i++) {      try {        valueArray[i] = annValueArray[i].value();        if (valueArray[i] == null) {          mLogger.error            ("Javadoc provided an array annotation member value which contains "+             "[file="+sp.file()+", line="+sp.line()+"]");          return;        }      } catch(NullPointerException npe) {        //FIXME temporary workaround for sun bug        mLogger.warning          ("Encountered a known javadoc bug which usually \n"+           "indicates a syntax error in an annotation value declaration.\n"+           "The value is being ignored.\n"+           "[file="+sp.file()+", line="+sp.line()+"]");        return;      }    }    // now go do something with them    if (valueArray[0] instanceof AnnotationDesc) {      AnnotationTypeDoc atd = getAnnotationTypeFor((AnnotationDesc)valueArray[0],sp);      if (atd == null) return;      String annType = getFdFor(atd);      MAnnotation[] anns = dest.createNestedValueArray        (memberName, annType, valueArray.length);      for(int i=0; i<anns.length; i++) {        populateAnnotation(anns[i],(AnnotationDesc)valueArray[i],sp);      }    } else if (valueArray[0] instanceof Number || valueArray[0] instanceof Boolean) {      JClass type = loadClass(returnType);      dest.setSimpleValue(memberName,annValueArray,type);    } else if (valueArray[0] instanceof FieldDoc) {      // this means it's an array of an enum constants      String enumTypeName = JavadocClassBuilder.getFdFor(        ((FieldDoc)valueArray[0]).containingClass());      JClass memberType = loadClass("[L"+enumTypeName+";");      String[] value = new String[valueArray.length];      for(int i=0; i<valueArray.length; i++) {        value[i] = ((FieldDoc)valueArray[i]).name(); //REVIEW is this right?      }      dest.setSimpleValue(memberName,value,memberType);    } else if (valueArray[0] instanceof ClassDoc) {      JClass[] value = new JClass[valueArray.length];      for(int i=0; i<value.length; i++) {        value[i] = loadClass(((ClassDoc)valueArray[0]));      }      dest.setSimpleValue(memberName,value,loadClass(JClass[].class));    } else if (valueArray[0] instanceof String) {      String[] value = new String[valueArray.length];      for(int i=0; i<value.length; i++) {        String v = ((String)valueArray[i]).trim();        if (v.startsWith("\"") && v.endsWith("\"")) {          //javadoc gives us the quotes, which seems kinda dumb.  just deal.          v = v.substring(1,v.length()-1);        }        value[i] = v;      }      dest.setSimpleValue(memberName,value,loadClass(String[].class));    } else {      mLogger.error("Value of array annotation member "+                                 memberName+" is of an unexpected type: "+                                 valueArray[0].getClass()+"   ["+                                 valueArray[0]+"]");    }  }