in xbean-reflect/src/main/java/org/apache/xbean/propertyeditor/StaticFactoryConverter.java [120:175]
private static int grade(final Method a) {
final String type = a.getReturnType().getSimpleName();
final String name = a.getName();
// valueOf beats all
if (name.equals("valueOf")) return -990000;
if (name.equals("valueOf" + type)) return -980000;
if (name.startsWith("valueOf")) return -970000;
// new*
if (name.equals("new" + type)) return -890000;
if (name.equals("newInstance")) return -880000;
if (name.startsWith("new")) return -870000;
// decode*
if (name.equals("decode")) return -790000;
if (name.equals("decode" + type)) return -780000;
if (name.startsWith("decode")) return -770000;
// for*
if (name.equals("for" + type)) return -690000;
if (name.startsWith("for")) return -680000;
// of*
if (name.equals("of")) return -590000;
if (name.equals("of" + type)) return -580000;
if (name.startsWith("of")) return -570000;
// parse*
if (name.equals("parse")) return -490000;
if (name.equals("parse" + type)) return -480000;
if (name.startsWith("parse")) return -470000;
// from*
if (name.equals("from")) return -390000;
if (name.equals("fromString")) return -380000;
if (name.startsWith("from")) return -370000;
// create*
if (name.equals("create")) return -290000;
if (name.equals("create" + type)) return -280000;
if (name.startsWith("create")) return -270000;
// compile*
if (name.equals("compile")) return -190000;
if (name.equals("compile" + type))return -180000;
if (name.startsWith("compile")) return -170000;
// get*
if (name.equals("get")) return 1000;
if (name.equals("get" + type)) return 1200;
if (name.equals("getInstance")) return 1200;
if (name.startsWith("get")) return 1300;
return 0;
}