if (answer != null) return answer;
  public Method getDeclaredMethod(String name, Class parameterTypes[])     throws NoSuchMethodException, SecurityException {    checkMemberAccess(Member.DECLARED);    if (!type.isClassType())  {      throw new NoSuchMethodException(name + parameterTypes);    }    VM_Atom aName = VM_Atom.findUnicodeAtom(name);    if (aName == null ||	aName == VM_ClassLoader.StandardClassInitializerMethodName ||	aName == VM_ClassLoader.StandardObjectInitializerMethodName) {      // null means that we don't have such an atom; <init> and <clinit> are not methods.      throw new NoSuchMethodException(name + parameterTypes);    }    // TODO: 1.4 SPEC states that if there are multiple matching methods    // then we should return the one with the most specific return type.    VM_Method[] methods = type.asClass().getDeclaredMethods();     for (int i = 0; i<methods.length; i++) {      VM_Method meth = methods[i];      if (meth.getName() == aName && 	  parametersMatch(meth.getParameterTypes(), parameterTypes)) {	return java.lang.reflect.JikesRVMSupport.createMethod(meth);      }    }        throw new NoSuchMethodException(name + parameterTypes);  }