code: private void generateArmProxyMatcher() {
          String proxyMatcherType = Types.PROXY_MATCHER.getInternalName();
  
          // stack: <proxyMatcher> :: <rule>
          insert(new InsnNode(DUP_X1));
          // stack: <rule> :: <proxyMatcher> :: <rule>
          insert(new TypeInsnNode(CHECKCAST, Types.MATCHER.getInternalName()));
          // stack: <rule> :: <proxyMatcher> :: <matcher>
          insert(new MethodInsnNode(INVOKEVIRTUAL, proxyMatcherType, "arm", '(' + Types.MATCHER_DESC + ")V", false));
          // stack: <rule>
      }
docs: <proxyMatcher>.arm(<rule>)