/** Is a finalizer method extended from Object: {@code protected void finalize()} */
  @Pure
  public static boolean isFinalizer(final RVMMethod method) {
    if (!method.isProtected()) return false;

    // is the method name "finalize"
    byte[] name = method.getName().getBytes();
    if (name.length != 8) return false;
    // is the desc "()V"?
    byte[] desc = method.getDescriptor().getBytes();
    if (desc.length != 3) return false;

    if (name[0] != 'f'
        || name[1] != 'i'
        || name[2] != 'n'
        || name[3] != 'a'
        || name[4] != 'l'
        || name[5] != 'i'
        || name[6] != 'z'
        || name[7] != 'e'
        || desc[8] != '('
        || desc[9] != ')'
        || desc[10] != 'V') return false;

    return true;
  }