if (proposalElementName == null && lowercaseElementName.startsWith(_partialToken)) {
if (proposalElementName == null && ((_requireExactNameMatch && lowercaseElementName.equals(_partialToken)) || (!_requireExactNameMatch && lowercaseElementName.startsWith(_partialToken)))) {
  protected String findMemberProposals(IMember _member, String _partialToken, String[] _prefixes, String _token, int _tokenOffset, int _offset, Set _completionProposals, int _requiredParameterCount, boolean _returnValueRequired) throws JavaModelException {    String nextType = null;    int flags = _member.getFlags();    // Look for non-static, non-private members ...    if (!Flags.isStatic(flags) && !Flags.isPrivate(flags)) {      boolean memberMatches = false;      if (_member instanceof IMethod) {        IMethod method = (IMethod) _member;        // make sure the requested parameter count matches (get = 0, set = 1)        if (method.getParameterNames().length == _requiredParameterCount) {          nextType = method.getReturnType();          // for get methods, we require a return type that is not void          if (_returnValueRequired && nextType != null && !nextType.equals("V")) {            memberMatches = true;          }          // for set methods, we require no return type or a void return type          else if (!_returnValueRequired && (nextType == null || nextType.equals("V"))) {            memberMatches = true;          }          else {            nextType = null;          }        }      }      else {        nextType = ((IField) _member).getTypeSignature();        memberMatches = true;      }      if (memberMatches) {        String elementName = _member.getElementName();        String lowercaseElementName = elementName.toLowerCase();        //System.out.println("WODCompletionProcessor.findMemberProposals: '" + _partialToken + "'=>" + _member.getElementName());        // Run through our list of valid prefixes and look for a match (i.e. whatever, _whatever, _getWhatever, etc).        // If we find a match, then turn it into wod-style naming -- lowercase first letter, dropping the prefix        String proposalElementName = null;        for (int prefixNum = 0; proposalElementName == null && prefixNum < _prefixes.length; prefixNum++) {          if (lowercaseElementName.startsWith(_prefixes[prefixNum])) {            int prefixLength = _prefixes[prefixNum].length();            String noPrefixElementName = lowercaseElementName.substring(prefixLength);            if (noPrefixElementName.startsWith(_partialToken)) {              proposalElementName = elementName.substring(prefixLength);              if (proposalElementName.length() > 0) {                char firstChar = proposalElementName.charAt(0);                if (Character.isUpperCase(firstChar)) {                  proposalElementName = Character.toLowerCase(firstChar) + proposalElementName.substring(1);                }              }            }          }        }        if (proposalElementName == null && lowercaseElementName.startsWith(_partialToken)) {          proposalElementName = elementName;        }        if (proposalElementName != null) {          WODCompletionProposal completionProposal = new WODCompletionProposal(_token, _tokenOffset, _offset, proposalElementName);          //_completionProposalsList.add(completionProposal);          _completionProposals.add(completionProposal);        }        else {          nextType = null;        }      }    }    return nextType;  }